第一次写博客,拿碰到的坑,来写写,看看有没有人访问我的博客。
背景: 一个队列对应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