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

时间:2011-11-10 20:06:49

标签: design-patterns integration message-queue

无论我读了多少这两种模式,我都看不出差异。

5 个答案:

答案 0 :(得分:20)

渠道 适配器 将应用程序连接到邮件系统。

  • 通道适配器位于单向消息流的开头和结尾。
  • 通道适配器适用于任何单向入站或出站适配器。
  • 换句话说,入站通道适配器支持仅用于的消息交换,出站通道适配器支持仅用于的交换。< / LI>

任何 双向 或请求回复适配器称为 网关

  • 如果传入的请求需要由多个线程提供服务,但调用者需要不知道消息传递系统,则入站网关会提供解决方案。
  • 出站端,可以在同步调用中使用传入消息,并在回复通道上发送结果。例如,出站网关可用于调用Web服务以及通过JMS进行同步请求 - 回复交互。

答案 1 :(得分:17)

这是一个很好的问题,因为它们相似,因为它们提供了对邮件系统的应用程序访问。它是如何实现它的,我认为这可以区分它们。

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

我认为Message Gateway更适用于进程内消息传递集成。它实际上是围绕消息子系统应用良好的OO封装。也许系统中的某个对象称为WorkOrderSender,其方法名为Send(WorkOrder wo)。该类的实现使应用程序免受消息传递的任何细节......调用只是另一种方法调用。事实上,应该可以换掉你的消息供应商,甚至可以用HTTP或FTP等交换消息。

答案 2 :(得分:2)

来自Spring集成参考文档:

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

请参阅http://static.springsource.org/spring-integration/reference/htmlsingle/#jms

答案 3 :(得分:0)

在Spring Integration中,模式名称Channel Adapter适用于任何单向入站或出站适配器。 换句话说,入站通道适配器支持仅邮件交换,而出站通道适配器支持仅邮件交换。

任何双向适配器或请求答复适配器在Spring Integration中被称为网关

频道适配器

通道适配器将应用程序连接到消息传递系统 在Spring Integration中,我们选择将定义限制为仅包含连接 是单向的,因此单向消息流以 通道适配器。存在许多不同种类的通道适配器,范围从 方法调用通道适配器到Web服务通道适配器

将通道适配器放在开头 以及单向消息流的结束。

enter image description here 邮件网关

在Spring Integration中,消息传递网关是特定的连接 双向消息传递。如果传入请求需要多个服务 线程,但调用者需要保持对消息传递系统的意识, 入站网关提供了解决方案。 在出站侧,传入消息 可以在同步调用中使用,结果将在回复通道上发送。

例如,出站网关可用于调用Web服务和同步 通过JMS进行请求-答复交互。

enter image description here

网关也可以在单向消息流的中间使用。与 通道适配器,相比之下,我们已经限制了消息传递网关的定义 到企业集成模式。

enter image description here

参考:Spring Integration in Action

答案 4 :(得分:0)

来自documentation

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