【发布时间】:2021-11-24 13:26:05
【问题描述】:
如果我的队列queue1 具有属性:x-message-ttl:60000,但对于此队列中的部分消息,我想要 TTL 120000 或根本没有 TTL。
TLDR:默认情况下,此队列中的所有消息都存在 1 分钟,但部分消息为 2 分钟或根本没有时间存在
【问题讨论】:
标签: rabbitmq
如果我的队列queue1 具有属性:x-message-ttl:60000,但对于此队列中的部分消息,我想要 TTL 120000 或根本没有 TTL。
TLDR:默认情况下,此队列中的所有消息都存在 1 分钟,但部分消息为 2 分钟或根本没有时间存在
【问题讨论】:
标签: rabbitmq
RabbitMQ 具有单独的机制来设置每个队列和每个消息的 TTL,如 in the online manual 所述。该页面上明确提到了同时使用两者:
当同时指定每个队列和每个消息的 TTL 时,将选择两者之间的较低值。
因此,您的两个示例都不起作用:
但其他组合也可以:
这种说法是有道理的:一条消息可以在多个队列中结束,因此如果它指定 30 秒的 TTL,则它的持续时间不应超过其中任何一个;并且被告知在 30 秒后删除消息的队列并不关心单个消息设置。
【讨论】: