首页 > 解决方案 > RabbitMQ-队列中未确认的消息计数随着侦听器的启动和未确认的消息由侦听器处理而增加

问题描述

我尝试使用配置了预取计数> 1的自定义容器工厂的专用rabbitMQ侦听器来处理死信队列中的消息。

我可以使用死信队列中的消息,但是消息在侦听器启动时从准备就绪移动到未确认。

侦听器/消费者能够处理这些消息。但是在应用程序重新启动时,那些未确认的消息正在准备就绪

假设我在死信队列中有 100 条消息,并且我定义了一个预取计数为 10 的侦听器。

在侦听器启动后,消费者能够处理这 10 条消息,但在死信队列中包含 90 条准备就绪和 10 条未确认消息。随着处理的继续,未确认消息增加了 10

应用程序重新启动后,那些未确认的消息再次回到死信队列中的就绪状态,并再次可供侦听器使用

请指导我

Config:
@Bean
public SimpleRabbitListenercontainerFactory prefetchFactory(connectionFactory){
SimpleRabbitListenercontainerFactory factory=new SimpleRabbitListenercontainerFactory ();
factory.setConnectionFactory(connectionFactory);
factory.setPrefetchCount(10);
factory.setTimeOut(10000);

}

这里 factory.setAcknowledgeMode(AcknowledgeMode.AUTO)不适用于消费者

Listener:
@RabbitListener(queues="dlq.queue",containerFactory="prefetchFactory")
public class Consumer{
@Rabbithandler
public void onReceive(Message m){
   Sysout.println("Message received:" +m.toString());
}
}

@GarryRussell

标签: rabbitmqspring-rabbit

解决方案


推荐阅读