通道适配器和消息网关模式有什么区别?

43
无论我读了多少有关这两种模式的文章,我都看不出它们之间的区别。
3个回答

19

这是一个很好的问题,因为它们都提供应用程序访问消息系统。我认为它们不同的地方在于它们实现这一点的方式。

通常情况下,通道适配器模式处理如何从现有系统获取数据而不修改该系统。通常,通道适配器是在进程外实现的。通常看到的例子是一个定期遍历底层数据库以查找要入队的内容的程序。或者是一个独立的应用程序,调用远程或HTTP API来访问系统数据以创建消息。重点是,非消息系统完全未被修改。

我认为消息网关更适用于进程内消息集成。它真正关注将良好的OO封装应用于消息子系统。也许系统中的某个对象被称为WorkOrderSender,并具有一个名为Send(WorkOrder wo)的方法。该类的实现对应用程序屏蔽了任何与消息有关的细节... 对于它来说,调用只是另一个方法调用。事实上,应该可以交换您的消息供应商,甚至可以将消息交换为HTTP或FTP等。


如果@Pillblast所指的模式是由Hohpe和Woolf在《企业集成模式》一书中描述的模式,那么我同意。其他定义可能会有所不同(请参见emush下面提供的Spring参考文献)。在我实现这些模式的情况下,我实际上使用了Messaging Gateway,在Channel Adapter内抽象底层的消息系统,就像在应用程序中所做的那样。 - BitMask777

4

链接未找到。 - Ganesa Vijayakumar

1

来自文档

  • 入站通道适配器用于单向集成,将数据带入消息应用程序。
  • 出站通道适配器用于单向集成,将数据发送到消息应用程序之外。
  • 入站网关用于双向集成流程,其中某个其他系统调用消息应用程序并接收回复。
  • 出站网关用于双向集成流程,其中消息应用程序调用某个外部服务或实体并期望结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接