应用了每条消息 TTL 的队列 追溯性地(当他们已经有消息时)将丢弃 发生特定事件时的消息。
只有当过期的消息到达队列的头部时,它们才会真正到达 已丢弃(标记为删除)。消费者不会有 传递给他们的过期消息。请记住 消息过期之间可能存在自然争用条件 和消费者交付,例如消息可能会过期 在写入套接字之后,但在到达之前 消费者。
设置每条消息的 TTL 时,过期消息可能会排队 在未过期的后面,直到后者被消耗或 过期。因此,此类过期消息使用的资源将 不被释放,它们将被计入队列统计信息中 (例如,队列中的消息数)。
追溯应用每条消息的 TTL 策略时,它是 建议让消费者在线,以确保 丢弃消息的速度更快。
鉴于现有 TTL 设置的每条消息的这种行为 队列中,当需要删除消息时要释放 资源出现,应改用队列 TTL(或队列 清除或队列删除)。
原文地址:https://www.rabbitmq.com/docs/ttl#message-ttl-applied-retroactively