- TTL 全稱 Time To Live(存活時(shí)間/過(guò)期時(shí)間)
- 當(dāng)消息到達(dá)存活時(shí)間后,還沒(méi)有被消費(fèi),會(huì)被自動(dòng)清除
-
RabbitMQ可以對(duì)消息設(shè)置過(guò)期時(shí)間,也可以對(duì)整個(gè)隊(duì)列(Queue)設(shè)置過(guò)期時(shí)間
ttl
隊(duì)列過(guò)期
@Bean("ttlQueue")
public Queue ttlQueue() {
return QueueBuilder.durable(TTL_QUEUE).ttl(10000).build();
}
ttl(): 設(shè)置隊(duì)列的過(guò)期時(shí)間, 單位 毫秒
消息過(guò)期
@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"): 設(shè)置消息的過(guò)期時(shí)間, 單位 毫秒
