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

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

相关推荐
.豆鲨包25 分钟前
【Android】深入理解Activity的生命周期和IntentFilter
android·java
s***558132 分钟前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
lkbhua莱克瓦2432 分钟前
集合进阶6——TreeMap底层原理
java·开发语言·笔记·学习方法·hashmap
JEECG低代码平台36 分钟前
GitHub 十大 Java 语言 AI 开源项目推荐
java·人工智能·github
小咖张40 分钟前
idea 启动失败,不加载自己的配置文件
java·ide·intellij-idea
至此流年莫相忘40 分钟前
Springboot入参校验实战:使用 javax.validation 优雅处理参数校验
spring boot
m***11901 小时前
使用IDEA环境编译Spring源码及spring源码调试环境搭建
java·spring·intellij-idea
代码程序猿RIP1 小时前
【C++开发面经】全过程面试问题详解
java·c++·面试
whatever who cares1 小时前
Java/Android中BigDecimal的相关操作
android·java·开发语言
djk88881 小时前
多标签页导航后台模板 html+css+js 纯手写 无第三方UI框架 复制粘贴即用
javascript·css·html