消息导向中间件(MoM)与企业服务总线(ESB)的区别

31

我来自MoM背景。我认为我在概念上理解ESB。然而,当涉及到在架构选择方面做出选择时,我并不太确定两者之间的实际区别。

以下是我想知道的内容:

1)有哪些在线资源可以帮助我了解这方面的知识。

2)有人能告诉我在何时使用一个比另一个更有意义。

任何帮助都将是有用的。

6个回答

38

消息传递通常集中于网络上的可靠信息交换;使用队列作为可靠的负载均衡器,并使用主题来实现发布和订阅。

ESB通常添加了比消息传递更多的功能,例如编排、路由、转换和调解等。

我建议阅读企业集成模式,它概述了你在集成问题中通常会使用的常见模式,这些模式都基于消息总线(虽然也可以与其他网络技术一起使用)。

例如,使用开源软件; Apache ActiveMQ提供松散耦合的可靠消息交换。然后可以使用Apache Camel实现企业集成模式,包括智能路由、转换、编排、与其他技术一起工作等等。


9
我将MOM解决方案和ESB解决方案放在两个不同的层面上。实际上,ESB解决方案通过使用特定MOM实现所提供的范例,达到了其自身的松耦合和异步通信能力。
因此,MOM代表了数据/事件分发的解决方案,在定制化QoS(根据特定供应商的实现)水平上,而ESB代表了提供在SOA场景下实现复杂编排的能力的解决方案(其中我们有多个提供者提供其服务,并且有多个消费者有兴趣消费第一个提供者提供的服务)。
复杂的编排意味着遗留系统之间的通信,每个系统都具有自己的数据域表示(特定数据的规则和服务)和自己的通信范例(一个消费者使用CORBA与ESB进行交互,另一个使用WS等)。
很明显,ESB代表了更复杂的架构解决方案,旨在提供“数据总线”的抽象(例如每个人都拥有的电子总线),能够连接大量的服务提供者和未明确指定的服务消费者,在(i)数据表示和(ii)通信方面隐藏了异构性。
对于这篇长篇文章,我很抱歉,但这些概念很复杂,很难在短语句中有效和高效地表达。

2

ESB通常是一个层,用于路由、日志记录、转换和执行其他“技术”(即非业务)功能的消息。它可以处理来自消息系统(例如基于JMS的某些东西)的消息,也可以与其他类型的消息(如基于SOAP的Web服务)一起工作。在这方面,它比MoM更通用。

声明:我是IBM WebSphere顾问 - 尽管我不以官方身份在此做出贡献。


0

IBM和Oracle拥有SOA认证。由于它们是市场领导者(Gartner Magic Quadrant),我建议阅读一下它们如何定义SOA和ESB(以及方法论和支持SOA所需的组件,如治理、注册表等等)。


0

EBS只是另一个流行词,SOA 2.0也是如此。

您可以使用普通的Web服务和队列轻松实现ESB系统。您可以使用SOA 1.0(Tibco、BizzTalk)进行消息路由或编排,两者并不互相排斥。更重要的是,在系统中交换的消息所赋予的语义扮演着重要的角色,这种情况下是事件。作为事件的消息是关于系统中发生的某些事情的触发器,因此上下文是不同的。


0

ESB以Web服务的真正形式提供应用程序松耦合,通过将数据通过消息的一个元素发送来实现。

MOM不仅提供应用程序松耦合,还提供过程松耦合。

ESB带有支持治理中心方法的附加功能。

两者可以根据情况独立或一起使用。


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