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

相关推荐
2403_883261092 分钟前
JavaScript中Nodejs环境内存限制与V8堆大小调整
jvm·数据库·python
2401_833033625 分钟前
如何用 CSS 变量配合 JS setProperty 实现动态换肤功能
jvm·数据库·python
麟听科技7 分钟前
HarmonyOS 6.0+ 智能家电控制APP开发实战:分布式设备联动与场景化控制落地
分布式·华为·harmonyos
2401_898717667 分钟前
CSS实现自定义滚动条的定位悬浮_利用fixed定位与伪类
jvm·数据库·python
才兄说8 分钟前
机器人二次开发机器狗巡检?自动返充避障
python
m0_7485548114 分钟前
如何在 Discord.py 中限制按钮仅由特定角色用户点击
jvm·数据库·python
尘埃落定wf15 分钟前
Python 数据库迁移:Alembic 太重?自己动手搭一套轻量版
数据库·python·mysql
Jetev15 分钟前
Golang怎么用embed嵌入配置文件_Golang如何将默认配置文件打包进二进制程序【技巧】
jvm·数据库·python
2301_7873124316 分钟前
golang如何实现Apple Pay集成_golang Apple Pay集成实现教程
jvm·数据库·python
m0_7403524218 分钟前
HTML怎么创建API调用历史记录_HTML最近请求参数快照【详解】
jvm·数据库·python