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