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

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

相关推荐
豆苗学前端5 分钟前
彻底讲透浏览器的事件循环,吊打面试官
前端·javascript·面试
来自上海的这位朋友6 分钟前
从零打造一个无依赖的Canvas图片编辑器
javascript·vue.js·canvas
中国胖子风清扬6 分钟前
Spring AI 深度实践:在 Java 项目中统一 Chat、RAG、Tools 与 MCP 能力
java·人工智能·spring boot·后端·spring·spring cloud·ai
零一科技9 分钟前
Spring AOP 底层实现:JDK 动态代理与 CGLIB 代理的那点事儿
java·后端·spring
头发还在的女程序员9 分钟前
陪诊小程序成品|陪诊系统功能|陪诊系统功能(源码)
java·小程序·his系统
编程小Y16 分钟前
Servlet 与 Tomcat 白话全解析:从核心原理到实战部署
java·servlet·tomcat
Spider Cat 蜘蛛猫16 分钟前
`mapper-locations` 和 `@MapperScan`区别
java·spring·maven
BD_Marathon22 分钟前
【JavaWeb】Tomcat_简介
java·tomcat
⑩-22 分钟前
Java-元注解 (Meta-Annotations)
java
灰灰勇闯IT22 分钟前
RN跨端适配与沉浸式体验:适配不同设备与系统
javascript·react native·react.js