Настройка «задержки повтора» в серии MQ - PullRequest
8 голосов
/ 24 августа 2009

Я надеюсь, что кто-то может мне помочь - я использую JBoss 5.1 и MQ Series 7 в приложении на основе EJB / JMS. В моем приложении есть несколько bean-компонентов, управляемых сообщениями, каждое из которых прослушивает очередь сообщений серии MQ. Когда во время обработки сообщения возникает ошибка, я должен иметь возможность настроить «задержку повтора», чтобы ряд mq ждал некоторый период времени, прежде чем пытаться повторно доставить сообщение. Я много раз изучал документацию MQ Series и пока не нашел способ сделать это в MQ Series. Я знаю, что JMS-провайдер по умолчанию JBoss имеет способ сделать это, но в настоящее время я ограничен использованием MQ Series. Так как я не смог установить задержку повтора - когда у меня появляется сообщение, которое выходит из строя, мое приложение застревает в узком цикле доставки сообщения и непрерывного отката. Может ли кто-нибудь помочь мне понять, есть ли какая-либо опция конфигурации в серии MQ, которая позволит мне подождать X миллисекунд, прежде чем повторно доставить сообщение об ошибке?

Ответы [ 3 ]

7 голосов
/ 11 ноября 2009

Вероятно, это будет возможность создать небольшую инфраструктуру для решения этой проблемы.

Поскольку вы можете посмотреть на JMSDeliveryCount, когда сообщение вошло в bean-компонент (перед его обработкой - рассмотрите область действия коммита), и вы можете увидеть, что у него уже было несколько откатов, отправьте сообщение в промежуточную очередь но прикрепите имя очереди назначения в свойствах jms, чтобы вы могли использовать его позже.

Простой процесс может запускаться через некоторый интервал для очистки очереди подготовки (например, каждые 5 минут) и отправки сообщения в очередь маршрутизации .

Другой процесс может сидеть в очереди маршрутизации и просматривать свойства jms (к которым добавлено имя очереди назначения) и отправлять сообщение вместе с оригинальным пунктом назначения.

Это посредник бедняка, но он достигнет цели. Это правда, что не так много встроенного, чтобы действительно делать то, что вы хотите.

3 голосов
/ 06 ноября 2009

Я думаю, тебе не повезло. Насколько я знаю, единственные параметры, которые можно настроить в этом сценарии, - это максимальное количество попыток повторения сообщения (BOTHRESH) и имя очереди исключения / возврата (BOQUEUE), куда будет отправлено сообщение, если число повторных попыток превышает макс.

Paal

0 голосов
/ 27 мая 2010

Можно указать предел повторных попыток, чтобы непрерывный откат прекратился после указанных попыток.

...