每条消息TTL行为与铁锹

时间:2018-08-27 23:32:41

标签: rabbitmq ttl rabbitmq-shovel

  

铁锹

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

  1. 消息TTL在队列收到消息时启动。重新发布消息后,时钟将在新队列上重置。
  2. shovel传输的消息在初始队列中的花费最好不超过几毫秒,即使它们甚至根本不在那儿(附有使用者的消息队列实际上也不会使任何消息进入队列大多数情况)。因此,在第一个队列中花费的时间应该很小,以至于没关系。
  3. 消息生存期应该对网络传输等具有相当大的容忍度,因此shovel的活动与正常噪声相当。

如果您发现自己处于shovel接收之前大量消息在队列中累积的情况,那么您可能需要处理应用程序中的到期。这样做还有其他好处和警告,但是总体上您可以获得更精细的控制。