JMS и Weblogic кластеризация - PullRequest
3 голосов
/ 20 марта 2012

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2012

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

0 голосов
/ 21 марта 2012

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

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

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

...