rabbitmq 消费者拿到消息不干活问题

本文记录了一次遇到的RabbitMQ消费者获取消息后未立即执行的情况。当一个队列有20个消费者,且存在多个队列与大量channel时,发现部分消费者获取消息后延迟执行。分析认为可能是RabbitMQ默认的50个共享线程池不足导致,建议根据业务需求调整线程池大小。
摘要由CSDN通过智能技术生成

第一次写博客,拿碰到的坑,来写写,看看有没有人访问我的博客。

背景: 一个队列对应20个消费者。有很多个队列,channel 数量200左右, 一个消费者对应一个channel.

问题:生产者往一个队列同时写入了10个消息。 理论来说,这个队列肯定是有10消费者拿到消息,去干活了。

但发现只有8个左右消费者立马去干活了,2个消费者拿到消息不立马干活,要等一些时间才去。




方法: rabbitmq 自带的共享线程池默认是50个线程。对于很大的业务需求, 50个是明显不够用的,得增大。

ExecutorService service = Executors.newFixedThreadPool(Integer.parseInt(threadNum));
factory.setSharedExecutor(service);

参考文章:

https://blog.csdn.net/weinianjie1/article/details/50611379

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值