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

相关推荐
cheryl884 分钟前
Python+Requests 企业级接口测试入门(1~3天)
开发语言·python
Linhieng1 小时前
Pyinstaller 打包程序后出现:ValueError: Invalid async_mode specified,开发环境没问题
python
爱的叹息1 小时前
Spring MVC 操作会话属性详解(@SessionAttributes 与 @SessionAttribute)
python·spring·mvc
大刘讲IT1 小时前
构建实时、融合的湖仓一体数据分析平台:基于 Delta Lake 与 Apache Iceberg
开发语言·python·sql·mysql·数据挖掘·数据分析·json
databook1 小时前
决策树剪枝:平衡模型复杂性与泛化能力
python·机器学习·scikit-learn
编程想法2 小时前
某网站防爬虫/防盗资源的实现和破防
后端·爬虫·python
江节胜-胜行全栈AI2 小时前
Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景
java·python·list
T - mars2 小时前
python爬虫:喜马拉雅登录案例
开发语言·python
小李独爱秋2 小时前
Zookeeper的作用详解
分布式·zookeeper·云原生
看海的四叔3 小时前
【Python】Python 100题 分类入门练习题 - 新手友好
开发语言·python·分类·数据分析·python学习