В чем разница между канальным адаптером и шаблоном шлюза обмена сообщениями? - PullRequest
37 голосов
/ 11 ноября 2011

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

Ответы [ 3 ]

20 голосов
/ 28 ноября 2014

A Channel Адаптер подключает приложение к системе обмена сообщениями.

  • Адаптер канала размещается в начале и конце однонаправленный поток сообщений .
  • Адаптер канала применяется к любому однонаправленному входящему или исходящему адаптеру.
  • Другими словами, адаптер входящего канала поддерживает только для обмена
    обмен сообщениями, а адаптер исходящего канала поддерживает * только для обмена
  • Если входящий запрос должен обслуживаться несколькими потоками, ноinvoker необходимо не знать о системе обмена сообщениями, решение обеспечивает входящий шлюз .
  • На стороне outbound входящее сообщение может использоваться в синхронном вызове.и результат отправляется на канал ответа.Например, исходящие шлюзы могут использоваться для вызова веб-сервисов и для синхронных взаимодействий запрос-ответ через JMS.
17 голосов
/ 11 ноября 2011

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

Шаблон адаптера канала описывает, как получать данные из существующей системы без ее изменения.Обычно Адаптер канала реализован вне процесса.Часто встречающиеся примеры - это программа, которая периодически просматривает базу данных, чтобы найти вещи для постановки в очередь.Возможно, отдельное приложение, которое вызывает удаленное взаимодействие или HTTP API для доступа к системным данным для создания сообщений.Дело в том, что система без сообщений полностью не изменена.

Я думаю, что шлюз сообщений больше предназначен для интеграции обмена сообщениями в процессе.Это действительно о применении хорошей OO инкапсуляции вокруг подсистемы сообщений.Возможно, какой-то объект в системе называется WorkOrderSender с методом Send (WorkOrder wo).Реализация этого класса защищает приложение от любых деталей обмена сообщениями ... для него вызов - это просто еще один вызов метода.Фактически, должна быть возможность поменять поставщика сообщений или даже обменяться сообщениями по HTTP или FTP и т. Д.

2 голосов
/ 09 декабря 2011

Из справочных документов по интеграции Spring:

Принимая во внимание, что адаптеры каналов JMS предназначены для однонаправленного обмена сообщениями (только для отправки или только для приема), Spring Integration также предоставляет входящие и исходящие шлюзы JMS для операций запроса / ответа.

См. http://static.springsource.org/spring-integration/reference/htmlsingle/#jms

...