当前位置: 首页 > 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条消息,

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

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

相关文章:

  • gittee使用教学
  • 基于Solr的全文检索系统的实现与应用
  • 华为OD机试 - 部门人力分配(Java JS Python C)
  • FFmpeg抽取视频h264数据重定向
  • JAVA网络编程——BIO、NIO、AIO深度解析
  • Go Fyne 入门
  • docker-compose安装教程
  • 51单片机LED与无源蜂鸣器模块
  • Python高级算法——动态规划
  • 【期末计算机组成原理速成】第三章:存储器
  • 【MYSQL】单表查询
  • 《算法与数据结构》答疑
  • ACM32F403/F433 12 位多通道,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中
  • uniapp下拉刷新
  • 基于Html+腾讯云播SDK开发的m3u8播放器
  • “大数据应用场景”之隔壁老王(连载四)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 2017-09-12 前端日报
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript对象详解
  • JavaScript类型识别
  • Java知识点总结(JavaIO-打印流)
  • leetcode46 Permutation 排列组合
  • Object.assign方法不能实现深复制
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Redux 中间件分析
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 编写符合Python风格的对象
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于Java中分层中遇到的一些问题
  • 开源SQL-on-Hadoop系统一览
  • 如何设计一个微型分布式架构?
  • 我是如何设计 Upload 上传组件的
  • 详解NodeJs流之一
  • 用Visual Studio开发以太坊智能合约
  • MPAndroidChart 教程:Y轴 YAxis
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Python 之网络式编程
  • 阿里云服务器购买完整流程
  • 国内开源镜像站点
  • 通过调用文摘列表API获取文摘
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • $NOIp2018$劝退记
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (done) 声音信号处理基础知识(4) (Understanding Audio Signals for ML)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (九)One-Wire总线-DS18B20
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)创业的注意事项
  • .DFS.
  • .md即markdown文件的基本常用编写语法