Rabbitmq 使用铲子的每消息TTL行为

Rabbitmq 使用铲子的每消息TTL行为,rabbitmq,ttl,rabbitmq-shovel,Rabbitmq,Ttl,Rabbitmq Shovel,铲子 使用队列中的消息 将每条消息重新发布到目标代理(默认情况下,在 适用) 我找不到任何文档,当涉及铲子时,消息TTL的预期行为是什么: 当收到消息时,计算TTL所用的时间是否开始 在源代理还是在目标代理?或者它只对第一次发布有效,即在源代理上 如果在消息到达目标代理之前过期,会发生什么情况 所以,我认为您在粘贴的文档中回答了这个问题。所做的一切就是将消息从一个队列移动到另一个队列,并在过程中重新发布它们。它将保留所有原始消息属性,理论上包括TTL属性 尽管如此,我不认为这是你需要担心的

铲子

  • 使用队列中的消息
  • 将每条消息重新发布到目标代理(默认情况下,在 适用)
我找不到任何文档,当涉及铲子时,消息TTL的预期行为是什么:

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

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


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

尽管如此,我不认为这是你需要担心的事情

  • 消息TTL在队列收到消息时启动。重新发布消息时,时钟在新队列上重置
  • 通过
    铲子
    传输的消息理想情况下在初始队列中花费的时间不会超过几毫秒,如果它们最终到达那里的话(在大多数情况下,连接了使用者的消息队列实际上不会将任何消息排入队列)。因此,在第一个队列中花费的时间应该很短,所以这无关紧要
  • 消息生存期对网络传输等有相当大的容忍度,因此<代码>铲</代码>的活动与正常噪声相当。 如果您发现队列中累积了大量消息,然后才能将它们清除,那么您可能需要在应用程序中处理过期问题。这样做还有其他好处和注意事项,但总体上可以获得更细粒度的控制