сообщение jms не перемещается из очереди в веб-сфере - PullRequest
3 голосов
/ 01 июня 2010

У меня есть бин, управляемый сообщениями, который выдает исключение при определенных условиях. Когда выдается исключение, сообщение не обрабатывается и не помещается обратно в очередь. Из того, что я понимаю с MQ и WAS (Websphere Application Server), сообщение должно быть помечено как плохое после x попыток и удалено из очереди. Этого не происходит, и сообщение остается в очереди, помеченной как плохой.

Какую часть конфигурации в MQ и / или WAS я пропустил, чтобы установить правильную настройку?

(Проблема с исключениями метания MDB здесь НЕ имеет значения)

Спасибо.

Ответы [ 2 ]

4 голосов
/ 01 июня 2010

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

Кроме того, QMgr должен иметь возможность помещать сообщение в назначенную очередь. Проблемы могут включать неправильное написание имени очереди, переполнение очереди возврата или учетная запись, на которой запущен MDB, не авторизован для размещения сообщений в очереди возврата.

Если MDB обнаруживает зацикленную петлю сообщения и ему некуда отправить сообщение, она прекращает обработку. Вы по-прежнему будете видеть поток, но вам не хватит одного или нескольких открытых дескрипторов ввода в очереди. Приложение должно быть перезапущено, чтобы восстановить его в этом случае.

Избегайте использования DLQ системы для пункта назначения возврата. DLQ - это место, где QMgr будет помещать сообщения, поступающие от другого QMgr, которые не могут разрешиться в очередь назначения. К ним будет прикреплен заголовок мертвой буквы, тогда как сообщения MDB, помещенные в очередь, не будут. Это может вызвать проблемы с любой автоматизацией, которую вы наблюдаете за DLQ. Поэтому желательно иметь очередь исключений для каждого приложения, которая не DLQ.

BOQTHRESH должно быть больше 1 или 2, потому что обычные операции, такие как отключение QMgr или канала, могут привести к отказу. Я обычно устанавливаю BOQTHRESH на 5 или 10, но видел, как люди устанавливают это намного выше. Зависит от вашего допуска к повторным попыткам и от того, были ли отказы, как правило, вызваны переходными условиями, такими как заполнение экстентов журнала.

1 голос
/ 02 июня 2010

Посмотрите на это Как WebSphere обрабатывает ядовитые сообщения статья.
Это относится к WAS 5, но принципы не изменились.

...