2012-03-20 12 views
3

Серверы приложений Weblogic, которые я использую, группируются. Я создал JMS-очередь и имеет имя JNDI. Когда потребитель просматривает имя jndi и публикует событие в очереди, будет ли он опубликован в очереди, созданной на обоих серверах приложений? Тот же MDB будет работать на обоих серверах - какой из них получит сообщение, отправленное в очередь? В случае, если мне нужно удалить сообщение, помещенное в очередь, нужно ли перебирать все узлы и удалять сообщение?JMS и Weblogic Clustering

Спасибо.

+0

Не могли бы вы разместить XML-конфигурацию модуля JMS? – fglez

ответ

0

Использование очереди означает, что сообщение гарантировано должно быть точно указано раз. Смысл, что сообщение будет доставлено на оба узла, но оно будет обрабатываться только глобально одним из узлов. WebLogic обрабатывает синхронизацию и координацию между узлами в вашем кластере, чтобы одновременно гарантировать доставку, но убедитесь, что она обрабатывается ровно один раз в глобальном масштабе.

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

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

0

Вы не говорите, какую именно очередь вы создаете в Weblogic для этого. Для кластерной среды лучше использовать DistributedQueue, а не стандартную очередь. Я считаю, что это позволяет Weblogic лучше обрабатывать способы обработки сообщений в очереди, когда один из узлов в кластере идет вниз. Существует также возможность просмотра содержимого очереди и удаления сообщений из консоли администратора Weblogic.

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