微服务 教程
1085个小节阅读:195.4k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
public void testSendMessage() {
//设置消息属性
MessageProperties messageProperties = new MessageProperties();
//设置存活时间
messageProperties.setExpiration("10000");
// 创建消息对象
Message message = new Message("send message...".getBytes(StandardCharsets.UTF_8), messageProperties);
// 发送消息
rabbitTemplate.convertAndSend("my_topic_exchange", "my_routing", message);
}
注意:
如果设置了单条消息的存活时间,也设置了队列的存活时间,以时间短的为准。
消息过期后,并不会马上移除消息,只有消息消费到队列顶端时,才会移除该消息。
xxxxxxxxxx
public void testSendMessage2() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
// 1.创建消息属性
MessageProperties messageProperties = new MessageProperties();
// 2.设置存活时间
messageProperties.setExpiration("10000");
// 3.创建消息对象
Message message = new Message(("send message..." + i).getBytes(), messageProperties);
// 4.发送消息
rabbitTemplate.convertAndSend("my_topic_exchange", "my_routing", message);
} else {
rabbitTemplate.convertAndSend("my_topic_exchange", "my_routing", "send message..." + i);
}
}
}
在以上案例中,i=5的消息才有过期时间,10s后消息并没有马上被移除,但该消息已经不会被消费了,当它到达队列顶端时会被移除。
实时效果反馈
1. 在RabbitMQ中,如果设置了单条消息的存活时间,也设置了队列的存活时间,
A 以单条消息的存活时间为准
B 以队列的存活时间为准
C 以时间短的为准
D 以时间长的为准
2. RabbitMQ消息过期后,
A 消息会被立即移除
B 只有消息在队列顶端时,才会被立即移除。
C 只有消息不在队列顶端时,才会被立即移除。
D 以上说法都不对
答案
1=>C 2=>B