当前位置: 首页 > news >正文

【rabbitMQ】模拟work queue,实现单个队列绑定多个消费者

上一篇: springboot整合rabbitMQ模拟简单收发消息

https://blog.csdn.net/m0_67930426/article/details/134904766?spm=1001.2014.3001.5502

 在这篇文章的基础上进行操作

基本思路:

1.在rabbitMQ控制台创建一个新的队列

2.在publisher服务中定义一个测试方法,在1秒内产生40条消息,发送到新创建的队列

3.在consumer服务中定义两个消息监听者,监听新创建的队列

1.在rabbitMQ控制台创建一个新的队列

 2.在publisher服务中定义一个测试方法,在1秒内产生40条消息,发送到新创建的队列

 

 @Testvoid Test2Send() {String queueName = "work.queue";for (int i =1 ; i <= 40; i++) {String msg = "hello,message_"+i;rabbitTemplate.convertAndSend(queueName, msg);try {Thread.sleep(30);} catch (InterruptedException e) {throw new RuntimeException(e);}}}

 3.在consumer服务中定义两个消息监听者,监听新创建的队列 

@RabbitListener(queues = "work.queue")
public void ccc(String msg){System.out.println("消费者c收到了work.queue的消息:【"+msg+"】");
}@RabbitListener(queues = "work.queue")
public void ddd(String msg){System.err.println("消费者d收到了work.queue的消息:【"+msg+"】");
}

调试:

消费者消息推送限制 

默认情况下,rabbitMQ会将消息依次投递给绑定在队列上的每一个消费者,但这并没有考虑到

消费者是否处理完消息,就很可能出现消息堆积现象

应对这一现象,我们可以在application.yml上设置preFetch的值为1,每次只能获取1条消息,

处理完才能获取下一条消息

在消费者模块的配置文件里设置

http://www.lryc.cn/news/259327.html

相关文章:

  • pdf转png的两种方法
  • 【起草】1-2 讨论 ChatGPT 在自然语言处理领域的重要性和应用价值
  • Mapreduce小试牛刀(1)
  • 二百一十七、Flume——Flume拓扑结构之聚合的开发案例(亲测,附截图)
  • vue3+ts+vite+element plus 实现table勾选、点击单行都能实现多选
  • 在WPF窗口中增加水印效果
  • wget下载到一半断了,重连方法
  • Docker笔记:docker compose部署项目, 常用命令与负载均衡
  • Java单元测试:JUnit和Mockito的使用指南
  • 缓存雪崩问题与应对策略
  • python编程需要的电脑配置,python编程用什么电脑
  • 目标检测YOLO实战应用案例100讲-基于深度学习的跌倒检测(续)
  • 05-命令模式
  • Docker安全及日志管理
  • 【LeetCode每日一题】152. 乘积最大子数组
  • Python 反射
  • HTML基本网页制作
  • Tcl语言语法精炼总结
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(下)--该如何使用GPT助手
  • 路由器静态路由的配置
  • [Firefly-Linux] RK3568在Ubuntu上安装内核头文件实现本地编译驱动程序
  • RabbitMQ Streams 详解
  • 跨境电商如何利用跨境客服软件提升销售额
  • css/less/scss代码注意事项
  • Git应用——代码提交规范 feat ,fix ,style
  • TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine
  • 单片机的低功耗模式介绍
  • 基于SSM实现的精品课程网站
  • 广州旅游攻略(略说一二)
  • C++STL的list模拟实现