消息总线和消息中间件(MOM)是同一件事吗?

6
每个关于消息总线(Message Bus)架构的描述似乎都在描述一种集中式中介来路由消息:
每个应用程序只有一个连接到消息总线,而不是多个专门连接到其他应用程序。
(来源:http://msdn.microsoft.com/en-us/library/ff647328.aspx)
将连接中间件结构化为一个消息总线来使这些应用程序能够使用消息协作。
(来源:http://www.eaipatterns.com/MessageBus.html)
Service Bus是位于应用程序之间的消息基础设施,允许它们以松散耦合的方式交换消息,从而提高规模和弹性。
(来源:http://www.windowsazure.com/en-us/home/features/messaging/)
这些描述似乎与消息代理(Message Broker)架构相同。这让我相信以下结论:
术语“消息总线”实际上与“MoM”相同——一种通用术语,用于指称不明确提及拓扑结构的消息基础设施。也就是说,消息代理是消息总线的一种类型。
这似乎是一个有争议的话题,虽然SO上有几个类似的问题,但没有一个(在我看来)有确定的答案。
(注:我知道企业服务总线(Enterprise Service Bus)是完全不同的,实际上是一种“功能丰富”的MoM。)
3个回答

6
您是对的,这个术语领域非常混乱,没有明确的答案,但这是我的专业生活观点:
首先要做的是以不同的抽象级别来考虑 - 架构概念与产品。
消息总线(http://www.eaipatterns.com/MessageBus.html)通常被视为一种架构原则,用于解耦应用程序,通常会使用规范数据格式(http://www.eaipatterns.com/CanonicalDataModel.html),而不考虑技术。通常使用MoM产品实现。
MoM通常指实现异步消息传递的一系列中间件产品。通常构建支持诸如JMS和AMQP之类的标准(通常是WebSphere MQ,ActiveMQ,Azure消息,hornetQ,RabbitMQ等)。
消息代理通常是MoM,两个术语都用于相同的消息产品。这里可能会有些混淆,因为IBM的主要ESB产品称为WebSphere Message Broker,在旁边使用MoM产品 - WebSphere MQ。通常,大多数MoM都称自己为代理商,例如RabbitMQ,ActiveMQ,QPid等。
希望这不会引起更多混淆 :)

0

这些差异主要是不同的供应商试图在市场上区分自己并增加他们的知名度。由于供应商通常定义自己的术语,因此每个供应商使用的术语的含义通常会略有不同。

然而,总体上它们属于相同的系统类别或类型。它们组织和管理来自一个软件服务到另一个软件服务的消息的传输、排队和持久性(存储),除此之外,您需要查看供应商特定产品的功能列表。


0
WebSphere Message Broker属于SOA的ESB层,也是MOM。WebSphere MQ也是MOM。我认为很多混淆都在于抽象的架构概念和实际的软件产品之间。SOA和ESB是抽象的概念。整个企业架构行业IBM、Microsoft、Oracle、TIBCO等公司总是争夺市场份额。软件公司经常假装他们发明了一些新的更好的东西,以吸引客户的注意力。他们对自己的产品做出许多夸张的承诺,但实际上他们创造了一整套昂贵的问题(例如XML转换会导致严重的性能和安全问题)。由于这是由企业的贪婪驱动和“快速进入市场”,所以总是存在大量的混乱和IT问题,给IT工作者带来很大的压力。

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