Apache camel Apache Camel未及时从SQS获取消息
我们有一个实现,其中消息被放置在AWS SQS队列上,并被AWS使用。我们使用concurrentConsumers=1。我们正在记录由org.apache.camel.component.aws.sqs.SqsConsumer完成的队列轮询 测试包括(从远程系统)向SQS发送消息,然后记录消息在队列中的时间。在Camel端,我们在SqsConsumer类上有跟踪日志记录,我们可以看到何时轮询队列以及何时使用消息 如果我们每10秒在队列中放置一条消息,大多数情况下,Camel会在1-2秒内拾取消息。但是,在很多情况下,这需要更长的时间(10秒以上) 基本上我们看到这种行为:Apache camel Apache Camel未及时从SQS获取消息,apache-camel,amazon-sqs,Apache Camel,Amazon Sqs,我们有一个实现,其中消息被放置在AWS SQS队列上,并被AWS使用。我们使用concurrentConsumers=1。我们正在记录由org.apache.camel.component.aws.sqs.SqsConsumer完成的队列轮询 测试包括(从远程系统)向SQS发送消息,然后记录消息在队列中的时间。在Camel端,我们在SqsConsumer类上有跟踪日志记录,我们可以看到何时轮询队列以及何时使用消息 如果我们每10秒在队列中放置一条消息,大多数情况下,Camel会在1-2秒内拾取消
- (远程)在SQS上放置消息
- (骆驼)投票
- (骆驼)投票
- (骆驼)投票
- 。。。(对于许多轮询,默认间隔为500毫秒)
- (驼峰)从SQS接收消息
注意-由于我们应用程序的功能性,我们在启用concurrentConsumers附带的多线程方面犹豫不决。正如@ketanvijayvargiya所建议的,长轮询似乎确实是答案。因为你的评论,我们再看一眼。有多种方法可以设置我们尝试的值:
我们已经测试了(2),没有发现任何行为改变(在我发帖时)。我们使用(1)再次测试,并看到了改进。我们再次使用(2)进行了测试,并看到了改进,因此我们只能假设在执行第一次测试时我们犯了错误。您是否尝试了长轮询?@ketanvijayvargiya是的,但行为似乎相同。感谢您分享您关于如何克服从队列中轮询消息的延迟的发现。我们在单一消费者(concurrentConsumers)方面也面临同样的问题,我们将尝试长轮询路线。