RabbitMQ 过期时间(TTL)

1、概述

TTL,Time to Live的简称,过期时间。

2、设置TTL

目前两种方法可以设置消息的TTL。第一种方法就是通过队列属性设置,队列中所有当消息都有相同的过期时间。第二种方法是对消息本身进行单独设置,每条消息的TTL可以不同。如果两种方法一起使用,则消息的TTL以两者之间较小的那个数值为准。消息队列中的生存时间一旦超过设置的TTL值,就会变成“死信”。

(1)设置消息的TTL

针对每条消息设置TTL的方法是在basic.publish方法中加入expiration的属性参数,单位为ms.

①通过policy的方式设置TTL

如果不设置TTL,则表示此消息不会过期;如果将TTL设置为0,则表示此时可以直接投递到消费者,否则该消息会被立即丢弃,这个特性可以部分替代RabbitMQ 3.0版本之前的immediate参数。

②通过HTTP API接口配置

对于第一种设置的TTL属性的方法,一旦消息过期,就会从队列中抹去,而在第二种TTL方法中,即使消息过期,也不会马上从队列中抹去,因为每条消息是否过期是在即将投递到消费者之前判定的。

(2)设置队列的TTL

通过队列属性设置消息TTL的方法是在queue.declare方法中加入x-message-ttl参数,单位为ms.

设置队列里的TTL可以应用与类似RPC方式的回复队列在RPC中,许多队列会被创建出来,但是确实未被使用的。
RabbitMQ会确保在过期时间到达后将队列删除,但是不保障删除的动作有多及时。在RabbitMQ重启后,持久化的队列的过期时间会被重新计算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Energet!c

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

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

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

打赏作者

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

抵扣说明:

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

余额充值