- TTL 全称 Time To Live(存活时间/过期时间)
- 当消息到达存活时间后,还没有被消费,会被自动清除
-
RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间
ttl
队列过期
@Bean("ttlQueue")
public Queue ttlQueue() {
return QueueBuilder.durable(TTL_QUEUE).ttl(10000).build();
}
ttl(): 设置队列的过期时间, 单位 毫秒
消息过期
@Test
public void test01() {
for (int i = 0; i < 10; i++) {
Map<String, Object> person = new HashMap<>();
person.put("name", "xiaoming"+i);
person.put("age", 18+i);
rabbitTemplate.setMandatory(true);
rabbitTemplate.setConfirmCallback(testConfirmFallback);
rabbitTemplate.setReturnCallback(testReturnFallback);
rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "test.ttl", person, message -> {
message.getMessageProperties().setExpiration("5000");
return message;
});
}
}
message.getMessageProperties().setExpiration("5000"): 设置消息的过期时间, 单位 毫秒
