铲子的每条消息 TTL 行为

Per message TTL behavior with shovels

Shovels

  • consumes messages from the queue,
  • re-publishes each message to the destination broker (using, by default, the original exchange name and routing_key when applicable).

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

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

话虽这么说,但我认为这不是您需要担心的事情。

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

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