侦听器启动时,队列中的RabbitMQ-Unacked消息计数增加,并且侦听器处理未确认的消息

时间:2020-04-29 05:59:48

标签: rabbitmq spring-rabbitmq

我正在尝试使用专用的RabbitMQ侦听器处理死信队列中的消息,该侦听器配置有预取计数> 1的定制容器工厂。

我能够使用死信队列中的消息,但是在侦听器启动时,消息已从就绪状态转移到未确认状态。

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

假设我在Dead Letter Queue中有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

0 个答案:

没有答案