2015-05-22 3 views
2

Я хотел бы развернуть ActiveMQ для того, чтобы соединиться и общаться с другими реализациями MOM из JMS, таких как WebsphereMQ, Tibco EMS, Oracle WebLogic JMS и т.д.Настройка ActiveMQ моста для подключения к различным реализациям MOM

Что касается как я исследовал онлайн, это, по-видимому, возможно, создав так называемый мост поверх activemq, который сможет общаться с другим концом, независимо от базового проводного протокола, используемого в каждой реализации jms.

Примеры, хотя и скудны и часто бывают минимальными, поэтому точка путаницы заключается в том, нужно ли включать jms-клиентские банки из каждой такой реализации (Weblogic, WebsphereMQ, TIBCO EMS и т. Д.) В моей конфигурации пути и конфигурации моста. Можно ли это сделать без таких банок?

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

ответ

5

... точка путаницы, нужно ли мне включать клиентские банки JMS от каждой такой реализации (Weblogic, Websphere MQ, TIBCO EMS и т.д.) в моем пути к классам и моста конфигурации. Можно ли это сделать без каких-либо таких банок?

TL; DR: Вам нужны фирменные классы поставщика.

JMS определяет API и оставляет формат проводки и другие детали реализации поставщику транспорта. Кроме того, в проприетарных реализациях форматы проводов могут значительно изменить версию до версии. (Одним из преимуществ проприетарного кода является способность совершать такие большие структурные изменения, когда это повышает производительность, надежность или функционирование.)

Одно место, где две реализации JMS имеют общность, когда сообщения находятся в памяти. Поскольку все реализации поставщика транспорта наследуются от одних и тех же классов Java JMS, обычно можно создавать объекты сообщений от двух разных поставщиков транспорта и копировать их из одного в другое. Для этого у вас должно быть есть банки каждого поддерживаемого поставщика транспорта.

Фактически, именно так работают большинство продуктов JMS-моста, которые я использовал. Код моста использует полностью квалифицированные имена классов для ссылки на классы двух разных поставщиков. Затем он создает две фабрики подключений, по одному для каждого транспорта и два разных адресата, а также по одному для каждого транспорта. Затем он считывает сообщение из очереди на одного поставщика, копирует его в объект сообщения на другом транспортном провайдере, а затем записывает сообщение.

Есть, конечно, много «gotchas» с таким подходом. Я приведу несколько из очевидных из них:

  • Координаты пунктов назначения между поставщиками - это руководство.
  • Распространение идентификационных данных не подлежит исполнению и требует, чтобы мост имел права на квази- или полное администрирование.
  • Транзакция через поставщиков в лучшем случае сложна, в худшем случае невозможна.
  • Идентификаторы корреляции должны быть сопоставлены мостом, если они отображаются вообще. Это делает мост более сложным и требует, чтобы он использовал базу данных или другое постоянное хранилище.
  • Специфичные для поставщика классы часто имеют надмножество атрибутов и методов, специфицированных спецификацией JMS. Если они используются, они удаляются во время копирования.
  • Из-за сегментации сообщений, группировки и других аффинностей не может быть корреляции 1: 1 через мост.
  • Из-за различий в реализации таких вещей, как высокая доступность, физическая структура сети одного поставщика транспорта не может сопоставлять 1: 1 с данными другого поставщика транспорта. Это имеет тенденцию ограничивать функцию моста простейшим общим знаменателем двух транспортов.
  • Вопросы, поднятые универсальным мостом, включают в себя все проблемы двухстороннего моста, поднятые как показатель количества поддерживаемых транспортов. Так что если 2-транспортный мост затруднен x, то для целей планирования предположим, что 5-транспортный мост затруднен (x)**5.

Это не значит «не закодировать мост», поскольку они оказываются очень полезными. Просто имейте в виду, что это не тривиальная задача.

1

Я боюсь, что это невозможно, по крайней мере, на конце IBM MQ. JMS - это просто API, и каждый провайдер может реализовать его так, как он видит, что он подходит (поскольку вы правильно сказали, что это не проводной протокол). банки-поставщики необходимы для подключения к продукту JMS.

0

У нас есть концепция называется Виртуальные назначения, попробуйте что

+0

Это должно быть комментарий к вопросу ФП в. Не ответ на вопрос. Как только вы заработаете, 50 человек, вы можете оставлять комментарии. , Помните, что все сообщения просматриваются другими пользователями Stack Overlfow. – Raju

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