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