SpringBoot 消息队列RabbitMQ Work模型 绑定多个消费者 负载均衡 消息处理速度

介绍

RabbitMQ 会将消息轮询地分发给所有绑定的消费者。多个消费者能够并发处理消息,提高了处理效率和系统的鲁棒性。

多个消费者

如果有50条消息将会 a1 a2 a1 a2 的方式进行去轮询消费

java 复制代码
@RabbitListener(queues ="insert.queue") ///insert.queue 为监听的队列名称
public  void  a1(String msg){ //消息消费
 System.out.println(msg);
 //....其他业务逻辑
}

@RabbitListener(queues ="insert.queue") ///insert.queue 为监听的队列名称
public  void  a2(String msg){ //消息消费
    System.out.println(msg);
    //....其他业务逻辑
}

这种方式消息只能被消费一次

在有的时候可能a1 的消费者处理的快一点,a2处理的慢一点 ,而还是以a1 a2 a1 a2这种方式去轮询速度就慢,希望让消费的快一点的多去处理一些消息就不会造成堵塞

解决方案

yaml 复制代码
spring:
  rabbitmq:
    host: 103.73.160.148
    port: 5673 #通信端口
    virtual-host: /csdn #虚拟主机名称
    username: csdn
    password: 123456
    listener:
      simple:
        prefetch: 1 #每次获取消费一个消息,处理完在获取

这样就可以达到消费能力好的去多处理一些消息,性能差的就去少处理消息。

相关推荐
HackTorjan7 分钟前
深度神经网络的反向传播与梯度优化原理
人工智能·spring boot·神经网络·机器学习·dnn
rKWP8gKv77 分钟前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫9 分钟前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_4352879210 分钟前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本12 分钟前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
运维全栈笔记30 分钟前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
yaoxin52112337 分钟前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
前端摸鱼匠1 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker1 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
极客先躯3 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图