Как JMS относится к сервисным автобусам - PullRequest
3 голосов
/ 12 ноября 2011

Я пытаюсь обернуть свой мозг вокруг JMS и читаю некоторые очень полезные источники и примеры . Сейчас я пытаюсь увидеть «общую картину» и представить всю теорию, лежащую в основе JMS, в практическом контексте, где используются реальные корпоративные технологии.

enter image description here

Итак, у нас есть четыре элемента: (1) JMS - Java API для MOM , (2) ActiveMQ - одна из многих реализаций JMS , (3) EIP - интригующий и загадочный зверь, которого я только начинаю понимать, и, наконец, (4) Apache Camel , реализация этого зверя с открытым исходным кодом.

Сейчас я пытаюсь связать эти компоненты вместе, чтобы увидеть JMS (и, вообще, обмен сообщениями корпоративного класса) в действии.

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

Даже если я не «понимаю», что такое EIP, я «получаю», что такие инфраструктуры, как Camel, Mule и ServiceMix, реализуют их и позволяют серверным компонентам («конечным точкам») эффективно передавать друг другу сообщения.

Наиболее важным в этом вопросе является мое понимание того, как эти четыре компонента связаны друг с другом. Я думаю, что понимание этого поможет мне соединить большинство точек; ну, в любом случае, важные.

Итак, на диаграмме выше я обозначил все 6 возможных отношений и сослался на них ниже:

  1. JMS: ActiveMQ. Я понимаю, что ActiveMQ - это реализация JMS, так же, как Hibernate - это реализация JPA. Это правильно?
  2. ActiveMQ: Camel - Camel имеет возможность отправлять сообщения в любую реализацию JMS, например ActiveMQ. В этом случае ActiveMQ является конечной точкой верблюда. Правильно?
  3. EIP: Camel - Camel - это реализация EIP. Понимание того, что такое EIP в первую очередь, также важно для моего понимания всей этой установки.
  4. EIP: JMS. Хотя между этими двумя соединениями не может быть прямой связи, создается впечатление, что обмен сообщениями является ядром EIP, а JMS является основой обмена сообщениями в Java. Это справедливая оценка?
  5. Я оставил отношения между EIP: ActiveMQ и JMS: Camel на случай, если между этими системами есть какие-то "большие понятия", о которых мне следует знать.

Будем весьма благодарны за любую помощь в наведении простого для понимания определения в EIP и в понимании того, как все эти компоненты связаны друг с другом. Заранее спасибо!

1 Ответ

2 голосов
/ 12 ноября 2011
  1. ActiveMQ - это реализация MOM.Он обеспечивает реализацию JMS API на стороне клиента для использования языками JVM.JMS - это просто API, но реализации связаны с любым брокером, с которым они общаются, с помощью проводного формата, поэтому вы не можете использовать реализацию ActiveMQ JMS, например, для связи с WebsphereMQ.Существуют другие API для взаимодействия с ActiveMQ с других языковых платформ - C / C ++ через CMS, .Net через NMS.Вы также можете общаться с ActiveMQ через другие «не-JMS-подобные» механизмы, например, через протокол STOMP, который имеет клиентские библиотеки на Ruby, Javascript и др.
  2. Да.
  3. Да инет.Camel использует тот же «язык», что и EIP, поэтому, используя Camel, вы, естественно, получаете EIP.Тем не менее, зная их, вы знаете, что вы ищете в API.Я рекомендую Camel in Action, чтобы лучше понять их, и обращайтесь к сайту EIP (http://www.eaipatterns.com/), когда вы хотите получить немного больше информации.
  4. Опять да и нет. Есть рядшаблоны, реализованные с помощью обмена сообщениями (JMS - только один из вариантов), но существует большое количество шаблонов, которые имеют гораздо более широкое применение (например, Splitter, Aggregator). Просмотрите индекс сайта EIP, чтобы почувствовать это.
  5. Camel может общаться с другими системами, используя свой компонент JMS, в котором используется любой основной поставщик сообщений, поддерживающий этот API (Websphere, Sonic, OpenMQ и т. Д.), А также другие технологии обмена сообщениями, например те, которые поддерживаютAMQP API.

Надеюсь, это поможет.

...