【问题标题】:RabbitMQ: What is the default x-message-ttl valueRabbitMQ:默认的 x-message-ttl 值是多少
【发布时间】:2014-07-25 00:30:10
【问题描述】:

我在 RabbitMQ 文档中找不到安装时附带的默认 x-message-ttl 值。

我知道如何将其设置为所需的值,但我很想知道默认值。

【问题讨论】:

    标签: rabbitmq amqp


    【解决方案1】:

    代理端默认没有设置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 了解更多信息。

    【讨论】:

    • 消息停留在队列中,直到它们“到达队列头”,而是直到它们被传递给消费者并被确认或拒绝(无需重新排队)。对于自动确认模式,这意味着“一旦发送出去”。 AMQP 0-9-1 队列是先进先出的,但重新排队时不清楚它应该如何工作。 RabbitMQ 尝试保持消息的原始顺序。
    • 当每条消息的 TTL 过期时,该消息将不会从队列中删除(它仍会使用一些资源,如内存或磁盘),直到它到达队列头。有关详细信息,请参阅 rabbitmq.com/ttl.html#per-message-ttl-caveats。并且通过重新排队也很清楚,消息在被确认之前不会从队列中删除(当使用自动确认时,它们会在代理端自动确认,无论它们实际被客户端消费)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2018-07-12
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多