2011-11-10 36 views

回答

14

这是一个很好的问题,因为它们的相似之处在于它们提供了对消息传递系统的应用程序访问。这是他们如何实现它我认为区分它们。

通道适配器模式处理如何在不修改该系统的情况下从现有系统获取数据。 Channel Adapdter通常是在进程外实现的。通常看到的例子是一个程序,它周期性地走一个底层数据库来查找要入队的东西。可能是一个独立的应用程序,它调用远程或HTTP API来访问系统数据以创建消息。问题是,非消息系统完全没有修改。

我认为Message Gateway更适合进行中消息集成。这实际上是围绕消息子系统应用良好的OO封装。也许系统中的某个对象被称为WorkOrderSender,其方法称为Send(WorkOrder wo)。该类的实现将应用程序从任何消息传递的细节屏蔽......对于该调用只是另一种方法调用。事实上,它应该能够换出您的邮件供应商,甚至交易消息来处理HTTP或FTP等

+0

如果@Pillblast指的是由Hohpe和Woolf在企业集成模式书中描述的模式,那么我同意。其他定义可能会有所不同(请参阅下面的emush的Spring参考)。在我已经实现这些模式的情况下,我实际上使用了通道适配器中的消息传递网关,以便像在应用程序中那样抽象基础消息传递系统。 – BitMask777

15

甲通道适配器连接应用到消息系统。

  • 通道适配器被放置在开始和单向消息流的结束。
  • 通道适配器适用于任何单向入站或出站适配器。
  • 换句话说,入站信道适配器支持的在仅消息
    交换,和出站信道适配器支持的出仅交换。

不限双向,或请求 - 应答,适配器已知为网关

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