Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 通道适配器和消息网关模式之间的区别是什么?_Design Patterns_Integration_Message Queue - Fatal编程技术网

Design patterns 通道适配器和消息网关模式之间的区别是什么?

Design patterns 通道适配器和消息网关模式之间的区别是什么?,design-patterns,integration,message-queue,Design Patterns,Integration,Message Queue,无论我读了多少关于这两种模式的书,我都看不出它们的区别。这是一个很好的问题,因为它们提供了对消息传递系统的应用程序访问。我认为这是他们的不同之处 通道适配器模式处理如何在不修改现有系统的情况下从该系统获取数据。通常,通道适配器在进程外实现。经常看到的例子是一个程序,它定期遍历底层数据库以查找要排队的内容。可能是一个独立的应用程序,它调用远程处理或HTTP API来访问系统数据以创建消息。关键是,非消息传递系统完全没有修改 我认为消息网关更适合于进程内消息集成。它实际上是关于在消息子系统周围应用良

无论我读了多少关于这两种模式的书,我都看不出它们的区别。

这是一个很好的问题,因为它们提供了对消息传递系统的应用程序访问。我认为这是他们的不同之处

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


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

来自Spring integration参考文档:

尽管JMS通道适配器用于单向消息传递(仅发送或仅接收),Spring Integration还为请求/应答操作提供入站和出站JMS网关


请参见Spring Integration中的模式名Channel Adapter,它适用于任何单向入站或出站适配器。 换句话说,入站通道适配器支持只入站的消息交换,出站通道适配器支持只出站的消息交换

在Spring集成中,任何双向或请求-应答适配器都称为网关

频道适配器

通道适配器将应用程序连接到消息传递系统 在SpringIntegration中,我们选择将定义压缩为只包含连接 这是单向的,因此单向消息流以 通道适配器。存在许多不同种类的通道适配器,包括 将通道适配器调用到web服务通道适配器的方法

通道适配器放置在开头 以及单向消息流的结尾

消息网关

在Spring集成中,消息网关是一种特定的连接 双向消息传递。如果传入请求需要由多个 线程,但调用程序需要保持不知道消息传递系统 入站网关提供了解决方案。 在出站端,输入消息 可以在同步调用中使用,结果在应答通道上发送

例如,出站网关可用于调用web服务和进行同步 JMS上的请求-应答交互

网关也可以在单向消息流的中流中使用。就像 通道适配器,相比之下,我们对消息传递网关的定义有一点限制 到企业集成模式

参考:Spring集成正在运行

来自:

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

如果@Pillblast指的是Hohpe和Woolf在《企业集成模式》一书中描述的模式,那么我同意。其他定义可能有所不同(请参见下文emush提供的弹簧参考)。在我实现这些模式的情况下,我实际上使用了通道适配器中的消息网关来抽象底层消息传递系统,就像在应用程序中一样。