【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条消息,发送到新创建的队列

java 复制代码
 @Test
    void 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服务中定义两个消息监听者,监听新创建的队列

java 复制代码
@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条消息,

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

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

相关推荐
TTBIGDATA15 小时前
【Atlas】Atlas Hook 消费 Kafka 报错:GroupAuthorizationException
hadoop·分布式·kafka·ambari·hdp·linq·ranger
m0_6873998417 小时前
telnet localhost 15672 RabbitMQ “Connection refused“ 错误表示目标主机拒绝了连接请求。
分布式·rabbitmq
陌上丨18 小时前
生产环境分布式锁的常见问题和解决方案有哪些?
分布式
新新学长搞科研18 小时前
【智慧城市专题IEEE会议】第六届物联网与智慧城市国际学术会议(IoTSC 2026)
人工智能·分布式·科技·物联网·云计算·智慧城市·学术会议
Ronin30518 小时前
日志打印和实用 Helper 工具
数据库·sqlite·rabbitmq·文件操作·uuid生成
泡泡以安18 小时前
Scrapy分布式爬虫调度器架构设计说明
分布式·爬虫·scrapy·调度器
没有bug.的程序员19 小时前
RocketMQ 与 Kafka 深度对垒:分布式消息引擎内核、事务金融级实战与高可用演进指南
java·分布式·kafka·rocketmq·分布式消息·引擎内核·事务金融
上海锟联科技20 小时前
250MSPS DAS 在地铁监测中够用吗?——来自上海锟联科技的工程实践
分布式·科技·分布式光纤传感·das解调卡·光频域反射·das
岁岁种桃花儿20 小时前
深度解析DolphinScheduler核心架构:搭建高可用Zookeeper集群
linux·分布式·zookeeper
yxy___20 小时前
达梦分布式集群DPC_影子和实体副本相互转换(DEM)_yxy
分布式·dem·影子副本