我有以下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;
}
更多信息: 我试图找到一种方法来停止/启动轮询命令,我正在使用没有xml的注释。
目前我正在使用SqsMessageDrivenChannelAdapter
并调用stop方法,然后在我想重新启动通道适配器时启动。我遇到的问题是,无论超时设置如何,都会在stop方法中抛出超时异常。这发生在future.get()
电话上(SimpleMessageListenerContainer
的第197行)我认为这导致开始不起作用。 Start不会抛出任何异常但轮询器不会发送任何新消息
更新:
启动和停止命令似乎正常工作。问题似乎是我无法设置属性:
public void setQueueStopTimeout(long queueStopTimeout) {
this.queueStopTimeout = queueStopTimeout;
}
这与SimpleMessageListenerContainer.java
SqsMessageDrivenChannelAdapter.java
的{{1}}不存在,但由于默认时间不够长,我会收到超时。
答案 0 :(得分:0)
你的问题不明确。请考虑将来更具体。
无论如何,让我猜一下,你的意思是start()/stop()
的{{1}}次操作。不确定将它注入所需位置并调用这些方法会出现什么问题。
SqsMessageDrivenChannelAdapter