TTL, Time to Live 的简称,即过期时间 。 RabbitMQ 可以对消息和队列设置 TTL 。
目前有两种方法可以设置消息的 TTL。第一种方法是通过队列属性设置,队列中所有消息
都有相同的过期时间。第二种方法是对消息本身进行单独设置,每条消息的 TTL 可以不同。 如果两种方法同时使用,则消息的
TTL以两者之间较小的那个数值为准。消息在队列中的生存时间一旦超过设置 的 TTL 值时,
就会变成"死信" (Dead Message) ,消费者将无法再收到该消息 (不是绝对的)
通过队列属性设置消息 TTL 的方法是在 channel.queueDeclare 方法中加入
x-message -ttl 参数实现的,这个参数的单位是毫秒。
用于表示过期时间的 x-expires 参数以毫秒为单位 , 井且服从和 x-message-ttl 一样
的约束条件,不过不能设置为 0。比如该参数设置为 1 000 ,则表示该队列如果在 1 秒钟之内未
使用则会被删除。
Map<String, Object> argss = new HashMap<String, Object>();
//创建一个6000ms的消息
argss.put("x-message-ttl", 6000);
// 创建一个过期时间为 30 分钟的队列:
// argss.put("x-expires", 1800000);
// 持久化的 非排他的 非自动删的队列
channel.queueDeclare(QUEUE_NAME, true, false, false, argss);
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。