RabbitMQ--消息的过期时间(TTL)--使用/原理

原文网址:RabbitMQ--消息的过期时间(TTL)--使用/原理_IT利刃出鞘的博客-CSDN博客

简介

本文介绍RabbitMQ的消息的过期时间。

本内容也是Java后端面试常见的问题。

TTL,Time to live的简称,即过期时间。RabbitMQ可以对消息和队列设置TTL。

消息的过期时间

如果不设置TTL,则表示此消息不会过期;如果将TTL设置为0,则表示除非此时可以直接将消息投递到消费者,否则该消息会被立即丢弃,这个特性可以部分替代RabbitMQ3.0版本
之前的immediate参数,之所以部分代替,是因为immediate参数在投递失败时会用Basic.Return将消息返回(这个功能可以用死信队列来实现)。

目前有两种方法可以设置消息的TTL:

  • 法1:通过队列属性设置:
    • 这样队列中所有消息都有相同的过期时间。
  • 法2:对消息本身进行单独设置
    • 每条消息的TTL可以不同。

如果两种方法一起使用,则消息的TTL以两者之间较小的那个数值为准。消息在队列中的生存时间一旦超过设置的TTL值时,就会变成“死信”(DeadMessage),消费者将无法再收到该消息。(这点不是绝对的,详见:死信队列)。

通过队列属性设置

通过队列属性设置消息TTL的方法是在channel.queueDeclare方法中加入x-message-ttl参数实现的,这个参数的单位是毫秒。

上边只是部分内容,为便于维护,本文已迁移到此地址:RabbitMQ消息的过期时间(TTL)-使用/原理 - 自学精灵

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值