铲子的每条消息 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 的预期行为是什么:
计算TTL的时间是否从接收到消息开始
在源经纪人处还是在目的地经纪人处?或者它只对第一次发布有效,即在源代理处?
如果在消息到达目标代理之前过期时间已过,会发生什么情况?
所以,我认为您在粘贴的文档中回答了这个问题。shovel
所做的只是将消息从一个队列移动到另一个队列,并在此过程中重新发布它们。它将保留所有原始消息属性,理论上包括 TTL 属性.
话虽这么说,但我认为这不是您需要担心的事情。
- 消息TTL在队列收到消息时开始。重新发布消息后,新队列的时钟将重置。
- 由
shovel
传输的消息在理想情况下在初始队列中花费的时间不会超过几毫秒,即使它们最终在那里(附加了消费者的消息队列实际上不会排队任何大多数情况下的消息)。所以,排在第一个队列的时间应该少到无所谓吧
- 消息生命周期应该对网络传输等有相当大的容忍度,因此
shovel
的活动与正常噪音相当。
如果您发现自己处于队列中堆积了大量消息的情况,然后才能 shovel
,那么您可能需要在应用程序中处理过期问题。这样做还有其他好处和注意事项,但总体上您可以获得更细粒度的控制。
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 的预期行为是什么:
计算TTL的时间是否从接收到消息开始 在源经纪人处还是在目的地经纪人处?或者它只对第一次发布有效,即在源代理处?
如果在消息到达目标代理之前过期时间已过,会发生什么情况?
所以,我认为您在粘贴的文档中回答了这个问题。shovel
所做的只是将消息从一个队列移动到另一个队列,并在此过程中重新发布它们。它将保留所有原始消息属性,理论上包括 TTL 属性.
话虽这么说,但我认为这不是您需要担心的事情。
- 消息TTL在队列收到消息时开始。重新发布消息后,新队列的时钟将重置。
- 由
shovel
传输的消息在理想情况下在初始队列中花费的时间不会超过几毫秒,即使它们最终在那里(附加了消费者的消息队列实际上不会排队任何大多数情况下的消息)。所以,排在第一个队列的时间应该少到无所谓吧 - 消息生命周期应该对网络传输等有相当大的容忍度,因此
shovel
的活动与正常噪音相当。
如果您发现自己处于队列中堆积了大量消息的情况,然后才能 shovel
,那么您可能需要在应用程序中处理过期问题。这样做还有其他好处和注意事项,但总体上您可以获得更细粒度的控制。