spring-integration-aws SqsMessageDrivenChannelAdapter控制总线

时间:2016-06-13 16:23:31

标签: java spring spring-integration spring-cloud-aws

我有以下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}}不存在,但由于默认时间不够长,我会收到超时。

1 个答案:

答案 0 :(得分:0)

你的问题不明确。请考虑将来更具体。

无论如何,让我猜一下,你的意思是start()/stop()的{​​{1}}次操作。不确定将它注入所需位置并调用这些方法会出现什么问题。

SqsMessageDrivenChannelAdapter