我正在使用Rabbit MQ作为我的应用程序.有时我需要因维护而阻止我的消费者.因此,将有数千条消息在队列中等待.重新启动消费者后,消息传递速率很高(每秒500-600条消息).按照这个速度,我的一个消费者无法处理消息并分解服务器.
我将来会更改消费者代码,但现在我需要一个快速的解决方案.
那么,有没有办法减慢交货率?我尝试过basicQos方法,但是没有用.
注意:我正在为消费者使用Java.
channel.basicConsume(queueName, false, consumer);
channel.basicQos(50);
consumer.getChannel().basicAck(delivery.getEnvelope().getDeliveryTag(), false);
Run Code Online (Sandbox Code Playgroud)
前两行使自动确认为false并设置传递限制.第三行在处理消息完成后确认消息.这解决了我的问题.当自动确认为真时,即使处理先前的消息未完成,消费者也会从队列中获取消息.这会导致内存问题和服务器故障.