首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >放慢Rabbit MQ交付率

放慢Rabbit MQ交付率
EN

Stack Overflow用户
提问于 2012-11-19 15:18:09
回答 1查看 1.6K关注 0票数 4

我将Rabbit MQ用于我的应用程序。有时,由于维护,我需要停止我的消费者。因此,将有数千条消息在队列中等待。重启消费者后,消息投递率很高(每秒500-600条消息)。在这种情况下,我的一个消费者无法处理消息并使服务器崩溃。

我会在未来改变消费者代码,但现在我需要一个快速的解决方案。

那么,有没有办法降低交货率呢?我尝试了basicQos方法,但它不起作用。

注意:我正在使用面向消费者的Java。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-24 23:47:04

代码语言:javascript
复制
channel.basicConsume(queueName, false, consumer);
channel.basicQos(50);

consumer.getChannel().basicAck(delivery.getEnvelope().getDeliveryTag(), false);

前两行使自动确认为假,并设置交付限制。第三行在消息处理完成后确认消息。这解决了我的问题。当auto acknowlegment为true时,即使之前的消息处理未完成,消费者也会从队列中获取消息。这会导致内存问题和服务器故障。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13449243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档