rabbitmq过期时间(TTL)
TTL,Time-to-Live。rabbitmq支持对消息和队列设置TTL
消息设置TTL
消息在队列中的生存时间超过设置的TTL时,就会变成死信
队列中设置消息TTL
在队列中设置消息的TTL,那么队列中的所有消息都有相同的过期时间,可以通过声明队列的时候设置x-message-ttl
参数
Map<String, Object> map = new HashMap<>();
map.put("x-message-ttl", 5000);
channel.queueDeclare(q_name, false, false, false, map);
消息本身设置TTL
对每条消息本身单独设置TTL,不影响其他消息的TTL时间,一旦消息过期就会从队列中抹去
AMQP.BasicProperties aa = new AMQP.BasicProperties.Builder()
.deliveryMode(2)
.expiration("6000") //设置TTL
.build();
channel.basicPublish(EX_PRIORITY, RT_PRIORITY, low, "msg".getBytes());
队列设置TTL
队列设置TTL过期后会被删除,但是不能保证实时被删除
Map<String, Object> map = new HashMap<>();
map.put("x-expires", 5000);
channel.queueDeclare(q_name, false, false, false, map);