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

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

相关推荐
user_admin_god1 分钟前
SSE 流式响应 Chunk 被截断问题的排查与修复
java·人工智能·spring boot·spring·maven·mybatis
我命由我1234513 分钟前
Java 开发 - CountDownLatch 不需要手动关闭
android·java·开发语言·jvm·kotlin·android studio·android-studio
小研说技术14 分钟前
结构化输出让Agent返回可预测的格式数据
java·人工智能
两年半的个人练习生^_^29 分钟前
PinYin4j汉字转拼音使用及踩坑
java
Cat_Rocky1 小时前
通过k8s实现单pod部署
java·容器·kubernetes
忡黑梨1 小时前
eNSP_ACL原理及应用
运维·服务器·网络·tcp/ip·github·负载均衡
秋91 小时前
Java AI编程工具全景解析:功能、收费与工单系统实战指南
java·开发语言·ai编程
瑶山1 小时前
IDEA 配置Go语言开发环境、GOPATH传统 Go 项目导入
java·golang·intellij-idea
weixin_419658311 小时前
RabbitMQ 的高级特性
java·分布式·rabbitmq
白晨并不是很能熬夜1 小时前
【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程
java·网络·后端·网络协议·面试·rpc·java-zookeeper