Я надеюсь, что кто-то может помочь мне - я использую JBoss 5.1 и Серию 7 MQ в EJB / JMS основывал приложение. У меня есть несколько управляемых сообщениями компонентов в моем приложении, каждый слушающий на Серийной очереди сообщений MQ. Когда с ошибкой встречаются во время обработки сообщения, я должен смочь настроить 'задержку повторной попытки', так, чтобы mq ряд ожидал некоторый промежуток времени прежде, чем попытаться повторно поставить сообщение. Я прочесал Серийную документацию MQ экстенсивно и еще не нашел способ выполнить это в Ряду MQ. Я знаю, что поставщик JMS по умолчанию JBoss имеет способ сделать это, но я в настоящее время ограничиваюсь использованием Ряда MQ. Так как я не смог установить задержку повторной попытки - когда у меня есть сообщение, что сбои, мое приложение застревает в жестком цикле передачи сообщения и отката непрерывно. Кто-либо может помочь мне понять, существует ли некоторая опция конфигурации в Ряду MQ, который позволит мне ожидать X миллисекунд прежде, чем повторно поставить неудавшееся сообщение?
Думаю, тебе не повезло. Насколько мне известно, единственные параметры, которые вы можете настроить в этом сценарии, - это максимальное количество повторных попыток сообщения (BOTHRESH) и имя очереди исключения / возврата (BOQUEUE), куда сообщение будет отправлено, если количество количество попыток превышает максимально допустимое.
Paal
Вероятно, это возможность создать небольшую инфраструктуру для такой проблемы.
Поскольку вы можете посмотреть на JMSDeliveryCount, когда сообщение вошло в компонент (перед его обработкой - рассмотрите область фиксации), и вы можете увидеть, что у него уже было несколько откатов, отправьте сообщение в промежуточную очередь но добавьте имя целевой очереди в свойствах jms, чтобы вы могли использовать его позже.
Простой процесс может выполняться с некоторым интервалом для очистки промежуточной очереди (например, каждые 5 минут) и отправки сообщения в очередь маршрутизации .
Другой процесс. может сесть в очередь маршрутизации и посмотреть на свойства jms (которые добавили имя целевой очереди) и отправить сообщение по первоначальному адресату.
Это бедняк ». s брокер, но он достигнет цели. Это правда, что здесь не так много встроенных элементов, чтобы действительно делать то, что вы хотите.
Вы можете указать предел повторных попыток, чтобы непрерывный откат останавливался после указанных попыток.