【问题标题】:RabbitMQ setExpiration(); propertyRabbitMQ setExpiration();财产
【发布时间】:2015-06-24 04:53:09
【问题描述】:

朋友们好,我想了解一下 RabbitMQ 中的 expriation 属性。如果我不设置这个属性会发生什么。我是rabbitMQ的新手,请帮助我。

AMQP.BasicProperties properties = new AMQP.BasicProperties();
properties.setExpiration("432000000");

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    阅读此https://www.rabbitmq.com/ttl.html

    可以在每条消息的基础上指定 TTL,方法是设置 发送 basic.publish 时基本 AMQP 类中的过期字段。

    过期字段的值描述了 TTL 周期 毫秒。适用与 x-message-ttl 相同的约束。自从 过期字段必须是字符串,代理将(仅)接受 数字的字符串表示形式。

    假设您设置Expiration time = 1000

    如果 1 秒内没有人消费该消息,则该消息将被丢弃。

    您可以使用https://www.rabbitmq.com/dlx.html 处理“丢弃”的消息。

    如果您不设置Expiration,则消息将永远保留在队列中(如果没有消费者)。

    编辑

    添加了theMayer的评论

    消息在到达队列头部之前不会被丢弃 - 因此,如果在队列中的消息之前存在未过期的消息,则在未过期的消息被删除之前不会自行删除消息消耗。

    另请阅读this 帖子

    【讨论】:

    • 这确实是一个警告。消息在到达队列头部之前不会被丢弃 - 因此,如果在队列中的消息之前存在未过期的消息,则在未过期的消息被消费之前不会有消息自行删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2016-04-07
    相关资源
    最近更新 更多