RabbitMQ(高级特性)设置单条消息存活时间

设置单条消息存活时间

java 复制代码
@Test
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);
}

注意:

1 如果设置了单条消息的存活时间,也设置了队列的存活时间,以时间短的为准。

2 消息过期后,并不会马上移除消息,只有消息消费到队列顶端时,才会移除该消息。

第二条测试:

java 复制代码
@Test
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后消息并没有马上被移除,但该消息已经不会被消费了,当它到达队列顶端时会被移除。

相关推荐
毋语天3 分钟前
Python 常用内置模块详解:日志、随机数、时间、OS 与 JSON
开发语言·python
右耳朵猫AI9 分钟前
Python技术周刊 2026年第14周
开发语言·python·okhttp
2501_9012005310 分钟前
MongoDB事务会产生多少性能损耗
jvm·数据库·python
zh15702317 分钟前
CSS如何通过Sass循环生成辅助类_批量创建颜色或间距样式
jvm·数据库·python
加号318 分钟前
【Python】 实现 HTTP 网络请求功能入门指南
网络·python·http
神明93119 分钟前
golang如何实现滚动更新方案_golang滚动更新方案实现实战
jvm·数据库·python
CLX050519 分钟前
mysql复杂查询语句如何调优_通过改写子查询为JOIN连接
jvm·数据库·python
m0_6091604922 分钟前
Redis怎样在Spring中执行批量Pipeline指令
jvm·数据库·python
2301_7838486522 分钟前
如何实现SQL动态字段选择查询_利用反射或动态拼接字符串
jvm·数据库·python
2303_8212873823 分钟前
SQL如何检查字符串是否存在:INSTR与LOCATE函数使用
jvm·数据库·python