spring-integration-aws SqsMessageDrivenChannelAdapter 控制总线



我有以下豆子:

@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;
}

这生活在SqsMessageDrivenChannelAdapter.javaSimpleMessageListenerContainer.java没有这个,我就会超时,因为默认值不够长。

你的问题不清楚。请考虑将来更具体。

无论如何,让我猜猜,你的意思是那个SqsMessageDrivenChannelAdapterstart()/stop()操作.不确定将其注入所需位置并调用这些方法有什么问题。

@Autowired
@Qualifier("sqsMessageAdapter")
private Lifecycle sqsMessageAdapter;

最新更新