2013-03-19 9 views
0

Я использую ActiveMQ как диспетчер заданий. Это означает, что один мастер отправляет сообщения о работе в ActiveMQ, а несколько подчиненных устройств захватывают сообщения о работе из ActiveMQ и обрабатывают их. Когда подчиненные заканчивают одно задание, они отправляют сообщение с job_id обратно в ActiveMQ.Обновление ActiveMQ на уровне приложения

Однако рабы ненадежны. Если одно ведомое устройство не отвечает до определенного периода времени, мы можем предположить, что подчиненное устройство выключено, и попробуйте повторно отправить отправленное сообщение о задании.

Есть ли хорошие идеи для реализации этой пересылки?

ответ

0

Обычно потребитель обрабатывает доставку, чтобы он мог поддерживать порядок сообщений, пока сообщение появляется в виде потока на брокере. Это означает, что переоснащение ограничено одним потребителем, если только этот потребитель не прекратится. Таким образом, брокер не знает о повторной доставке.

В ActiveMQ v5.7 + у вас есть возможность использования дополнительной доставки брокера, возможно, что брокер повторно отправит сообщение после задержки с помощью повторной отправки. Это реализовано брокерским плагином, который обрабатывает обработку мертвых букв путем повторной доставки через планировщик. Это полезно, когда общий порядок сообщений не важен и где через распределение нагрузки и нагрузки среди потребителей. При повторной доставке брокера сообщения, которые не дают доставку данному потребителю, могут сразу же отправляться повторно.

См. ActiveMQ documentation для примера настройки этого параметра в файле конфигурации.

Смежные вопросы