RabbitMQ-Количество непрочитанных сообщений в очереди увеличивается с запуском слушателя, а непрочитанные сообщения обрабатываются слушателем - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь обработать сообщения в очереди недоставленных сообщений с помощью специального прослушивателя rabbitMQ, настроенного с настроенной фабрикой контейнеров с числом предварительных выборок> 1.

Я могу получать сообщения из очереди недоставленных сообщений, но сообщения Перемещение из состояния готовности в нераспакованное состояние при запуске приемника.

Слушатель / потребитель может обрабатывать эти сообщения. Но при перезапуске приложения эти неупакованные сообщения перемещаются в состояние готовности

Предположим, у меня есть 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) не работает для sumer

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

@ GarryRussell

...