【发布时间】:2015-06-24 04:53:09
【问题描述】:
朋友们好,我想了解一下 RabbitMQ 中的 expriation 属性。如果我不设置这个属性会发生什么。我是rabbitMQ的新手,请帮助我。
AMQP.BasicProperties properties = new AMQP.BasicProperties();
properties.setExpiration("432000000");
【问题讨论】:
标签: rabbitmq
朋友们好,我想了解一下 RabbitMQ 中的 expriation 属性。如果我不设置这个属性会发生什么。我是rabbitMQ的新手,请帮助我。
AMQP.BasicProperties properties = new AMQP.BasicProperties();
properties.setExpiration("432000000");
【问题讨论】:
标签: rabbitmq
阅读此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 帖子
【讨论】: