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 #每次获取消费一个消息,处理完在获取

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

相关推荐
ch.ju1 分钟前
Java程序设计(第3版)第二章——选择结构
java
llm大模型算法工程师weng3 分钟前
Java高并发架构设计:从理论到实战的全链路解决方案
java·开发语言
CQU_JIAKE11 分钟前
4.17【a]
java
Devin~Y13 分钟前
从Spring Boot到Spring AI:音视频AIGC内容社区Java大厂面试三轮连环问(含Kafka/Redis/安全/可观测性答案)
java·spring boot·redis·spring cloud·kafka·spring security·resilience4j
Rsun0455114 分钟前
14、Java 模板方法模式从入门到实战
java·python·模板方法模式
二妹的三爷21 分钟前
私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片)
spring boot·后端·ui
沐雪轻挽萤21 分钟前
17. C++17新特性-并行算法 (Parallel Algorithms)
java·开发语言·c++
StockTV33 分钟前
SpringBoot对接黄金白银期货数据API
java·spring boot·后端
zopple44 分钟前
前端三剑客 vs Vue.js:核心区别解析
前端·javascript·vue.js
hsjcjh44 分钟前
窗口函数-详细讲解分析
java·服务器·前端