无论我读了多少有关这两种模式的文章,我都看不出它们之间的区别。
这是一个很好的问题,因为它们都提供应用程序访问消息系统。我认为它们不同的地方在于它们实现这一点的方式。
通常情况下,通道适配器模式处理如何从现有系统获取数据而不修改该系统。通常,通道适配器是在进程外实现的。通常看到的例子是一个定期遍历底层数据库以查找要入队的内容的程序。或者是一个独立的应用程序,调用远程或HTTP API来访问系统数据以创建消息。重点是,非消息系统完全未被修改。
我认为消息网关更适用于进程内消息集成。它真正关注将良好的OO封装应用于消息子系统。也许系统中的某个对象被称为WorkOrderSender,并具有一个名为Send(WorkOrder wo)的方法。该类的实现对应用程序屏蔽了任何与消息有关的细节... 对于它来说,调用只是另一个方法调用。事实上,应该可以交换您的消息供应商,甚至可以将消息交换为HTTP或FTP等。
来自Spring集成参考文档:
JMS通道适配器用于单向消息传递(仅发送或仅接收),而Spring Integration还提供用于请求/响应操作的入站和出站JMS网关。
请查看http://static.springsource.org/spring-integration/reference/htmlsingle/#jms
来自文档: