【发布时间】:2014-07-25 00:30:10
【问题描述】:
我在 RabbitMQ 文档中找不到安装时附带的默认 x-message-ttl 值。
我知道如何将其设置为所需的值,但我很想知道默认值。
【问题讨论】:
我在 RabbitMQ 文档中找不到安装时附带的默认 x-message-ttl 值。
我知道如何将其设置为所需的值,但我很想知道默认值。
【问题讨论】:
代理端默认没有设置x-message-ttl参数,所以基本上你可以将默认值解释为无穷大。
如果您将没有 ttl 的消息发布到没有设置 ttl 的队列(是的,有每个消息和每个队列的 ttl 参数,请参阅下面的注释):
如果消息发布为持久且队列声明为持久消息,只要不被消费,它就会一直留在队列中;
如果消息未作为持久消息发布或队列未声明为持久消息,则消息将保留在队列中,只要它不会被消费或直到代理重新启动。
TTL 说明:
当每个消息和每个队列的 ttl 集代理都使用最小值时。例如,如果每条消息的 ttl 为 10000(10 秒),每条队列的 ttl 为 20000(20 秒),则将应用每条消息的 ttl。
每条消息的 TTL 注释:
具有过期 ttl 的消息将留在队列中,只要它们没有到达队列头。不用担心,它们不会被发送给消费者,但它们会占用一些资源,直到到达头部。这就是 RabbitMQ 队列的工作原理(它们坚持 FIFO 的思想,这有时可能会破坏与 AMQP 协议的严格兼容性)。请参阅Caveats section in Time-To-Live Extensions 了解更多信息。
【讨论】: