TTL:Time To Live
过期时间/存活时间
当消息到达指定存活时间之后还没有被消费,那么消息就会被清除
RabbitMQ
可以对消息
设置过期时间,也可以对消息队列
设置过期时间
队列统一过期:
设置队列过期,使用参数:x-message-ttl
,单位是毫秒,会对整个队列消息同一过期
@Test
public void testTTL(){
for (int i = 0; i < 10; i++) {
rabbitTemplate.convertAndSend("test_exchange_ttl","ttl.hehe","message ttl");
}
}
消息单独过期:
设置消息过期时间使用参数:expiration
,单位也是毫秒,如果对消息和整个队列都设置了过期时间那么就以短的为主。
@Test
public void testTTL(){
MessagePostProcessor messagePostProcessor= new MessagePostProcessor(){
@Override
public Message postProcessMessage(Message message) throws AmqpException {
// 设置message的过期时间
message.getMessageProperties().setExpiration("5000");
// 返回该消息
return message;
}
};
rabbitTemplate.convertAndSend("test_exchange_ttl","ttl.hehe","message ttl",messagePostProcessor);
}