RabbitMQ可见性超时

时间:2013-10-16 18:15:23

标签: amazon-web-services queue rabbitmq amazon-sqs

RabbitMQ队列是否具有类似AWS SQS的“消息可见性超时”?

来自AWS SQS文档:

“一旦Amazon SQS返回消息,可见性超时时钟就开始计时。在此期间,组件处理并删除消息。但是如果组件在删除消息之前失败会发生什么?如果您的系统没有调用DeleteMessage for在可见性超时到期之前,该消息再次对系统中组件发出的ReceiveMessage调用可见,并且将再次收到该消息“

谢谢!

3 个答案:

答案 0 :(得分:4)

我相信您正在寻找RabbitMQ手动确认功能。此功能允许您从队列中获取消息,一旦您收到消息,就可以获取消息。如果在此过程的中间发生某些事情,则在一段时间后该消息将再次在队列中可用。此外,与此同时,由于您在收到消息之前收到消息,因此该消息无法供其他消费者使用。

我认为这与SQS的消息可见性超时行为相同。

答案 1 :(得分:1)

没有任何消息超时;只有当工作者连接死亡时,RabbitMQ才会重新传递消息。即使处理消息需要非常长的时间也没关系。没有任何消息超时;只有当工作者连接死亡时,RabbitMQ才会重新传递消息。即使处理消息需要非常长的时间,也没关系。

答案 2 :(得分:0)

我相信可以在a discussion of MQ vs SQS处找到答案,通常这被认为是MQ的功能(它可以处理缓慢的使用者),但是将目标策略“ slowConsumerStrategy”与“ abortSlowConsumerStrategy”一起使用可能会解决您的问题。可以在redhat's MQ documentation处找到更详细的解释,我认为我们必须希望RabbitMQ和AmazonMQ都支持该策略。