JMS и ESB - как они связаны? - PullRequest
28 голосов
/ 16 марта 2011

Для меня JMS и ESB кажутся очень взаимосвязанными вещами, и я пытаюсь понять, как именно они связаны.

Я видел предложение, что JMS может использоваться в качестве транспорта для ESB - тогда что еще, кроме транспорта, должно присутствовать в таком ESB? Является ли JMS простым ESB или нет, чего ему не хватает в настоящем ESB?

Ответы [ 8 ]

31 голосов
/ 16 марта 2011

JMS предлагает набор API для обмена сообщениями: поместите сообщение в очередь, кто-то другой, позднее, возможно, географически далеко, заберет сообщение из очереди и обработает его.Мы отделены во времени и местонахождении поставщика сообщений и потребителя.Даже если получатель сообщений какое-то время не работает, мы можем продолжать создавать сообщения.

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

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

 if ( message.customer.type == Platinum )
      do something special

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

 Request Queue, the producer(s) puts their requests here
 Platinum Queue, platinum consumer processing reads from here
 Standard Queue, a standard consumer reads messages from here

И затем все, что нам нужно, - это немного хитрости в самой системе очередей, чтобы затем передавать сообщения из очереди запросов в платиновую очередь или стандартную очередь.

Таким образом, это возможность маршрутизации на основе содержимого, и это то, что обеспечивает ESB.Обратите внимание, что ESB использует фундаментальные возможности очереди, предлагаемые JMS.

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

  Request Version 1 Queue  Existing providers write here
  Request Version 2 Queue  New provider write here, New Consumer Reads here

И ESB получает сообщения очереди версии 1, преобразует их в сообщения версии 2 и помещает их в очередь версии 2.

Преобразование сообщений - это еще одна возможная возможность ESB.

Посмотрите на продукты ESB, посмотрите, что они могут сделать.Работая в IBM, я больше всего знаком с WebSphere ESB

5 голосов
/ 19 января 2012

Я бы сказал, что ESB - это как фасад для многих протокалов .... JMS - один из них.

2 голосов
/ 13 мая 2011
  • В дополнение к приведенному выше списку добавлена ​​последняя версия ESB с открытым исходным кодом - UltraESB

JMS плохо подходит для интеграции служб REST, файловых систем,S / FTP, электронная почта, Hessian, SOAP и т. Д., Которые лучше обрабатываются с помощью ESB, который изначально поддерживает эти типы.Например, если у вас есть процесс, который выкидывает CSV-файл объемом 500 МБ в полночь, и вы хотите, чтобы другая система взяла файл, проанализировала CSV и импортировала в базу данных, это может быть легко выполнено ESB - тогда как решение с помощью простогоJMS будет плохим.Аналогично, интеграция служб REST с балансировкой нагрузки / переключением при сбое в несколько внутренних экземпляров может быть лучше реализована с помощью встроенной поддержки ESB HTTP / S.

1 голос
/ 28 августа 2012

Эта трансформация не происходит автоматически.Вам необходимо настроить службу преобразования или записи

Посмотрите на https://access.redhat.com/knowledge/docs/en-US/JBoss_Enterprise_SOA_Platform/4.2/html/SOA_ESB_Message_Transformation_Guide/ch02s03.html

С уважением, Раджа Нагендра Кумар, технический директор www.tejasoft.com

1 голос
/ 16 марта 2011

ESB предлагает интеграцию с множеством различных протоколов в дополнение к JMS.
Большинство используют JMS за кулисами для передачи, хранения и перемещения сообщений. Одно из таких решений OpenESB, использует сообщения формата XML.

Есть ESB с открытым исходным кодом, который вы можете проверить -

Реализация JMS, такая как ActiveMQ , поставляется со встроенным в них Camel.

0 голосов
/ 31 марта 2018

JMS и ESB обеспечивают способ связи между различными приложениями. Но контекст для JMS и ESB различен .JMS для простой необходимости.JMS реализуется провайдером JMS.Это специфично для Java.

Примерами провайдеров JMS являются: Apache Active MQ, IBM MQ, HornetQ и т. Д.

ESB для сложных задач. ESB - это компонент в EAI , обеспечивающий средства связи для различных приложений. Это универсальный и не специфичный для Java .JMS является одним из поддерживаемых протоколов.

Примерами провайдера ESB являются: MuleESB, Apache Camel, OpenESB

Сценарий использования: использование ESB может потребовать дополнительных ресурсовесли все наши коммуникационные приложения на Java и используют один и тот же формат сообщений.Здесь JMS может быть достаточно.

0 голосов
/ 24 сентября 2014

Есть брокеры сообщений JMS, которые вы можете легко настроить с помощью ESB.https://docs.wso2.com/display/ESB470/JMS+Transport

0 голосов
/ 24 ноября 2012

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

...