Использовать сообщение из очереди после того, как сервис завершил обработку предыдущего сообщения. - PullRequest
0 голосов
/ 19 сентября 2019

Я делаю POC для работы с RabbitMQ и у меня есть вопросы о том, как условно прослушивать очереди!

Мы принимаем сообщения из очереди и после их использования сообщение будет включено в процесс загрузки.это занимает больше времени в зависимости от размера файла.И поскольку размеры файлов больше, иногда внешней службе мы вызываем нехватку памяти, если используется несколько сообщений и процесс загрузки продолжается для предыдущих сообщений.

При этом мы хотели бы использовать только следующеесообщение из очереди, как только текущее / предыдущее сообщение полностью обработано.Я новичок в JMS, и мне интересно, как это сделать.

Моя текущая мысль заключается в том, что поток кода вручную извлечет следующее сообщение из очереди, когда завершит процесс предыдущего сообщения, поскольку поток знает, что оно имеетзавершил обработку, но если этот слушатель используется только в потоке кода для ручного вызова, то как он получит самое первое сообщение!

1 Ответ

0 голосов
/ 20 сентября 2019

Спецификация JMS говорит, что потребители сообщений работают последовательно:

Сеанс, используемый для создания потребителя сообщений, сериализует выполнение всех прослушивателей сообщений, зарегистрированных в сеансе

Если вы создаете MessageListener и используете его с вашим потребителем, спецификация JMS гласит, что слушатель onMessage будет вызываться последовательно, то есть один раз для каждого сообщения после того, как слушатель обработал каждое сообщение.Таким образом, каждое сообщение ожидает, пока не завершится предыдущий.

...