springboot+rabbitmq 一个队列开了300个消费者 速度很慢是什么原因?

发布于 2022-01-07 12:14:17 字数 654 浏览 878 评论 14

公司系统要将商品上架到拼多多商家后台中, 每天最少10万件,算了算平均 一分钟要上传最少70个商品,单线程的情况下一件商品需要1分钟左右,在本地开了50个消费者测试上架速度 有显著提升,但是放到三台服务器上开了将近300个消费者 速度却很慢,是不是rabbitmq需要做什么配置啊??新手不懂


这个是消费者代码

配置文件



这是yml配置文件,求大佬告知如何优化。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

檐上三寸雪 2022-01-07 21:08:03

回复
就是服务器承不住那么多的消费者试了好久找到了可开最大的阈值就可以了,现在开了四百多个消费者 每天处理API请求可以达到2000W~4000W次 从7月份到现在没有出现过大问题了,用了两台服务器做消费者一台做生产者

情场扛把子 2022-01-07 21:08:03

他说解决了 又不说咋解决的 这不难受么。:triumph:

情痴 2022-01-07 21:08:02

你这个速度很慢是什么原因,我也遇到了

冷弦 2022-01-07 21:08:00

消费者最外层的方法 catch里面写 channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); 出异常了 false表示忽略 不然会一直重新回到队列死循环

最偏执的依靠 2022-01-07 21:07:59

回复
回复
解决了 。service层 catch块异常语句那个e.getcause().getMessage()方法报错...把代码全部更新到服务器看下效果,,

因为看清所以看轻 2022-01-07 21:07:55

上面的问题解决了  现在有个新的问题

在消费者中调用service层方法后 一直报错异常, 然后死循环的调用同一个消费内容。

但是我service层方法中有用try catch块去处理异常 ,我打断点看了 但是他在service中调用报错了会捕获并且做相应的处理

处理完消息队列就报错监听失败 然后一直处理这种数据 ,,,,这个怎么解决

后知后觉 2022-01-07 21:07:51

调试方式: 把业务代码全部注释掉, 然后, 打印简单的hello world. 看看, 正常的队列消费是否达到期望值? 如果达到, 说明你那些业务代码,有瓶颈. 如果没达到, 说明MQ配置有问题! 就这样啦!

悸初 2022-01-07 21:07:20

是我写的呢。。。。

秋意浓 2022-01-07 21:06:52

第二个图中有set消费者最大数量的地方,看你写的是50。这个代码质量还可以,你能问出来这个问题这个不是你写的吧?

终遇你 2022-01-07 21:06:41

找到解决方案了 但是又出现新的问题了。。

拥有 2022-01-07 21:05:42

有可能是其它方面的瓶颈,数据库?内存?GC?IO?之类的,这个可以监控下,一个个排查。

最偏执的依靠 2022-01-07 21:05:01

我三台服务器 一台4个tomcat 一台2个tomcat 每个tomcat启动40个消费者 还有一台开了20个消费者 现在之前的问题解决了 但是有个新的问题 看下面我发的内容。。

无人问我粥可暖 2022-01-07 21:04:19

@RabbitListener(queues = "xxxx",concurrency = "10") concurrency 开启多个消费者

沙与沫 2022-01-07 18:33:40

哪个地方开50个线程?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文