spring-integration-aws SqsMessageDrivenChannelAdapter 控制总线
spring-integration-aws SqsMessageDrivenChannelAdapter control bus
我有以下 bean:
@Bean
public MessageProducer sqsMessageAdapter() {
SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, awsConfiguration.myQueue.get());
adapter.setAutoStartup(true);
adapter.setMaxNumberOfMessages(1);
adapter.setSendTimeout(2000);
adapter.setVisibilityTimeout(200);
adapter.setWaitTimeOut(20);
adapter.setOutputChannel(this.myOutput);
return adapter;
}
更多信息:
我正在尝试找到一种 stopping/starting 命令轮询的方法,我正在使用没有 xml 的注释来执行此操作。
目前我正在使用 SqsMessageDrivenChannelAdapter
并调用 stop 方法,然后在我想重新启动通道适配器时调用 start 。我遇到的问题是无论超时设置如何,都会在停止方法中抛出超时异常。这发生在 future.get()
调用(SimpleMessageListenerContainer
的第 197 行)我认为这导致开始无法工作。 Start 不会抛出任何异常,但轮询器不会接收任何新消息
更新:
启动和停止命令似乎工作正常。问题似乎是我无法设置 属性:
public void setQueueStopTimeout(long queueStopTimeout) {
this.queueStopTimeout = queueStopTimeout;
}
这与 SqsMessageDrivenChannelAdapter.java
中的 SimpleMessageListenerContainer.java
一起生活 如果没有这个,我会超时,因为默认时间不够长。
你的问题不清楚。请以后考虑更具体一些。
无论如何,让我猜猜,您的意思是 start()/stop()
操作 SqsMessageDrivenChannelAdapter
。不确定将它注入所需位置并调用这些方法有什么问题。
@Autowired
@Qualifier("sqsMessageAdapter")
private Lifecycle sqsMessageAdapter;
我有以下 bean:
@Bean
public MessageProducer sqsMessageAdapter() {
SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, awsConfiguration.myQueue.get());
adapter.setAutoStartup(true);
adapter.setMaxNumberOfMessages(1);
adapter.setSendTimeout(2000);
adapter.setVisibilityTimeout(200);
adapter.setWaitTimeOut(20);
adapter.setOutputChannel(this.myOutput);
return adapter;
}
更多信息: 我正在尝试找到一种 stopping/starting 命令轮询的方法,我正在使用没有 xml 的注释来执行此操作。
目前我正在使用 SqsMessageDrivenChannelAdapter
并调用 stop 方法,然后在我想重新启动通道适配器时调用 start 。我遇到的问题是无论超时设置如何,都会在停止方法中抛出超时异常。这发生在 future.get()
调用(SimpleMessageListenerContainer
的第 197 行)我认为这导致开始无法工作。 Start 不会抛出任何异常,但轮询器不会接收任何新消息
更新:
启动和停止命令似乎工作正常。问题似乎是我无法设置 属性:
public void setQueueStopTimeout(long queueStopTimeout) {
this.queueStopTimeout = queueStopTimeout;
}
这与 SqsMessageDrivenChannelAdapter.java
中的 SimpleMessageListenerContainer.java
一起生活 如果没有这个,我会超时,因为默认时间不够长。
你的问题不清楚。请以后考虑更具体一些。
无论如何,让我猜猜,您的意思是 start()/stop()
操作 SqsMessageDrivenChannelAdapter
。不确定将它注入所需位置并调用这些方法有什么问题。
@Autowired
@Qualifier("sqsMessageAdapter")
private Lifecycle sqsMessageAdapter;