消息超时
消息超时
TTL 全称 Time To Live(存活时间/过期时间)。
当消息到达存活时间后,还没有被消费,会被自动清除。
RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。

具体实现
一、队列层面设置
1、设置

别忘了设置绑定关系:

2、测试
- 不启动消费端程序
- 向设置了过期时间的队列中发送100条消息
- 等10秒后,看是否全部被过期删除

一、队列层面代码设置
二、消息层面设置
1、设置
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessagePostProcessor;
@Test
public void testSendMessageTTL() {
// 1、创建消息后置处理器对象
MessagePostProcessor messagePostProcessor = (Message message) -> {
// 设定 TTL 时间,以毫秒为单位
message.getMessageProperties().setExpiration("5000");
return message;
};
// 2、发送消息
rabbitTemplate.convertAndSend(
EXCHANGE_DIRECT,
ROUTING_KEY,
"Hello", messagePostProcessor);
}
2、查看效果
这次我们是发送到普通队列上:


浙公网安备 33010602011771号