Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在为我的应用程序使用 Rabbit MQ。有时我需要因维护而停止我的消费者。因此,将有数千条消息在队列中等待。重新启动消费者后,消息传递率很高(每秒 500-600 条消息)。以这种速度,我的一个消费者无法处理消息并破坏服务器。
我将来会更改消费者代码,但现在我需要一个快速的解决方案。
那么,有没有什么办法可以降低发货速度呢?我尝试了 basicQos 方法,但它不起作用。
注意:我正在为消费者使用 Java。
channel.basicConsume(queueName, false, consumer); channel.basicQos(50); consumer.getChannel().basicAck(delivery.getEnvelope().getDeliveryTag(), false);
前两行使自动确认为假并设置交货限制。第三行在消息处理完成后确认消息。这解决了我的问题。当自动确认为真时,即使处理先前的消息未完成,消费者也会从队列中获取消息。这会导致内存问题和服务器故障。