2009-08-24 4 views
7

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

ответ

3

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

Paal

6

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

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

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

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

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

0

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