【问题标题】:RabbitMQ Visibility TimeoutRabbitMQ 可见性超时
【发布时间】:2013-10-25 00:01:34
【问题描述】:

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

来自 AWS SQS 文档:

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    我相信您正在寻找 RabbitMQ 手动确认功能。此功能允许您从队列中获取消息,并在收到消息后确认它们。如果在这个过程中发生了一些事情,消息将在一定时间后再次出现在队列中。此外,在您收到消息直到您确认它的同时,该消息不可供其他消费者使用。

    我认为这与 SQS 的 Message Visibility Timeout 行为相同。

    【讨论】:

    • 是的,但是如何控制时间量。我需要让一条消息最多隐藏 12 小时。
    • 我也对此感兴趣。我想将可见时间更改为大于默认值(我认为是 3 分钟?)
    【解决方案2】:

    没有任何消息超时; RabbitMQ 只会在工作连接断开时重新传递消息。即使处理消息需要非常非常长的时间也没关系。没有任何消息超时; RabbitMQ 只会在工作连接断开时重新传递消息。即使处理消息需要非常非常长的时间也没关系。

    【讨论】:

    • 我认为这优于 SQS。
    【解决方案3】:

    我相信答案可以在@a discussion of MQ vs SQS 中找到,通常这是 MQ 的一个功能(它可以处理慢速消费者),但使用“slowConsumerStrategy”和“abortSlowConsumerStrategy”的目标策略可能会解决您的问题。可以在redhat's MQ documentation 找到更完整的解释,我想我们必须希望 rabbitMQ 和 AmazonMQ 都支持该策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 2020-06-09
      • 2020-08-01
      • 1970-01-01
      • 2017-05-09
      • 2016-11-16
      相关资源
      最近更新 更多