【问题标题】:Per message TTL behavior with shovels铲子的每条消息 TTL 行为
【发布时间】:2019-02-02 12:22:26
【问题描述】:

铲子

  • 使用队列中的消息,
  • 将每条消息重新发布到目标代理(默认情况下,使用原始交换名称和 routing_key 适用)。

我找不到任何文档,当涉及铲子时,消息 TTL 的预期行为是什么:

  • 收到消息时计算 TTL 所用的时间是否开始 在源代理还是在目标代理?还是仅对第一次发布有效,即在源代理处?

  • 如果在消息到达目标代理之前过期时间已过,会发生什么情况?

【问题讨论】:

    标签: rabbitmq ttl rabbitmq-shovel


    【解决方案1】:

    所以,我认为您在粘贴的文档中回答了问题。shovel 所做的只是将消息从一个队列移动到另一个队列,并在此过程中重新发布它们。它将保留所有原始消息属性,理论上包括 TTL 属性。

    话虽如此,我不认为这是你需要担心的事情。

    1. 消息 TTL 在队列收到消息时开始。重新发布消息后,新队列上的时钟会重置。
    2. shovel 传输的消息理想情况下将在初始队列中花费不超过几毫秒,如果它们甚至最终到达那里(在大多数情况下,附加消费者的消息队列实际上不会将任何消息排入队列)。因此,在第一个队列中花费的时间应该很小,以至于没有关系。
    3. 消息的生命周期应该对网络传输等有相当的容忍度,所以shovel的活动与正常的噪音相当。

    如果您发现自己的情况是大量消息在队列中累积,然后才能被shovel'd,那么您可能需要在应用程序中处理过期问题。这样做还有其他好处和注意事项,但总体上您可以获得更细粒度的控制。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 2015-08-22
      相关资源
      最近更新 更多