Как я могу прочитать из очереди повторной доставки в пакетном режиме? - PullRequest
0 голосов
/ 11 ноября 2019

Я использую ActiveMQ classic в качестве администратора очередей. Мой потребитель сообщений (@JmsListener, использующий Spring) пишет в MongoDB. Если MongoDB недоступен, он отправляет сообщение в другую очередь, давайте назовем его очередью повторной доставки.

Итак, представьте, что после того, как mongoDB не работал в течение многих часов, он, наконец, работает. Каков наилучший способ прочитать сообщение из этой очереди повторной доставки?

Я думаю, есть ли возможность сделать это, создав пакетное задание, которое запускается один раз в день? Если да, какие варианты можно использовать для создания подобной работы или есть ли другие доступные варианты.

1 Ответ

1 голос
/ 11 ноября 2019

Для JMS нет «пакетного» режима. Потребитель JMS может получать только одно сообщение за раз. Как правило, лучший способ повысить пропускную способность сообщений для обработки большого количества сообщений - это увеличить количество потребителей. Это должно быть довольно просто сделать с помощью Spring JmsListener, используя настройку concurrency.

Вы, конечно, можете использовать что-то вроде cron, чтобы запланировать работу для работыс этими сообщениями или вместо этого вы используете что-то вроде Quartz Job Scheduler .

Невозможно дать вам «лучший» способ справиться с вашей ситуацией при переполнении стека. Просто слишком много неизвестных переменных.

...