【发布时间】:2018-04-01 15:16:32
【问题描述】:
我正在尝试设置一个集成流来使用来自亚马逊 sqs 队列的消息,并且到目前为止它工作正常。但我想调整每分钟或每秒的消息数量。例如每分钟 20 条消息。
这里是我的 sql 监听 bean 的定义
@Bean
public MessageProducer mySqsMessageDrivenChannelAdapter() {
SqsMessageDrivenChannelAdapter adapter = new SqsMessageDrivenChannelAdapter(this.amazonSqs, queueName);
adapter.setMessageDeletionPolicy(SqsMessageDeletionPolicy.ON_SUCCESS);
adapter.setVisibilityTimeout(TIMEOUT_VISIBILITY);
adapter.setWaitTimeOut(TIMEOUT_MESSAGE_WAIT);
adapter.setMaxNumberOfMessages(prefetch);
adapter.setOutputChannel(processMessageChannel());
return adapter;
}
如您所见,我设置了每次轮询获取的最大消息数,但是如何设置轮询之间的延迟?
在常规 jms 队列中,我可以使用 JMS.inboundAdapter 使用自定义轮询器,但似乎使用 SqsMessageDrivenChannelAdapter 我无法设置任何轮询计时器值。
也许我可以使用除 SqsMessageDrivenChannelAdapter 之外的 MessageProducer,但使用哪一个?
是否可以使用 sqs 设置 JMS.inboundAdapter?
【问题讨论】:
-
它看到解决方案可以在这里找到stackoverflow.com/questions/29667321/…。在这种情况下,这个问题可以被认为是重复的,但这里的重点是我正在使用弹簧集成。如果可行,我将尝试调整那里的解决方案,我将关闭此解决方案。
标签: java spring spring-integration amazon-sqs spring-integration-dsl