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

相关推荐
Eiceblue23 分钟前
将 Python 列表导出为 Excel 文件:一维、二维、字典列表
开发语言·python·excel·visual studio code
AC赳赳老秦23 分钟前
动态可视化报告制作:DeepSeek+Mermaid生成交互式流程图/甘特图
信息可视化·rabbitmq·流程图·甘特图·memcached·memcache·deepseek
Swizard7 小时前
别再让你的 Python 傻等了:三分钟带你通过 asyncio 实现性能起飞
python
Darkershadow9 小时前
python学习之串口通信
python·学习
3824278279 小时前
python:输出JSON
前端·python·json
也许是_10 小时前
大模型应用技术之 详解 MCP 原理
人工智能·python
沙漠豪11 小时前
提取PDF发票信息的Python脚本
开发语言·python·pdf
F_D_Z12 小时前
【Python】家庭用电数据的时序分析
python·数据分析·时序分析·序列分解
a程序小傲12 小时前
蚂蚁Java面试被问:注解的工作原理及如何自定义注解
java·开发语言·python·面试