Java 面向消息的中间件 (MoM) Vs。企业服务总线 (ESB)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/309374/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Message Oriented Middleware (MoM) Vs. Enterprise Service Bus (ESB)
提问by a-sak
I come from a background of MoM. I think I understand ESB conceptually. However, I'm not too sure about the practical differences between the two when it comes to making a choice architecturally.
我来自妈妈的背景。我想我从概念上理解 ESB。但是,在进行架构选择时,我不太确定两者之间的实际差异。
Here is what I want to know
这是我想知道的
1) Any good links online which can help me in this regard.
1)任何可以在这方面帮助我的在线好链接。
2) Can someone tell me where it makes sense to use one over the other.
2)有人可以告诉我使用一个比另一个更有意义吗?
Any help would be useful.
任何帮助都会有用。
采纳答案by James Strachan
Messaging tends to concentrate on the reliable exchange of messages around a network; using queues as a reliable load balancer and topics to implement publish and subscribe.
消息传递倾向于围绕网络进行可靠的消息交换;使用队列作为可靠的负载均衡器和主题来实现发布和订阅。
An ESB typically tends to add different features above and beyond messaging such as orchestration, routing, transformation and mediation.
ESB 通常倾向于在消息传递之外添加不同的功能,例如编排、路由、转换和中介。
I'd recommend reading about the Enterprise Integration Patternswhich gives an overview of common patterns you'll tend to use in integration problems which are all based above a message bus (though can be used with other networking technologies too).
我建议阅读企业集成模式,它概述了您在集成问题中倾向于使用的常见模式,这些模式都基于消息总线(尽管也可以与其他网络技术一起使用)。
For example using open source; Apache ActiveMQprovides a loosely coupled reliable exchange of messages. Then you can use Apache Camelto implement the Enterprise Integration Patternsfor smart routing, transformation, orchestration, working with other technologiesand so forth.
例如使用开源;Apache ActiveMQ提供松散耦合的可靠消息交换。然后,您可以使用Apache Camel来实现企业集成模式,以实现智能路由、转换、编排、与其他技术的协同工作等等。
回答by Andrew Ferrier
An ESB is typically a layer that routes, logs, transforms, and performs other 'technical' (i.e. non-business) functions on messages. It could process messages from a messaging system (such as something JMS-based), or it could work with other types of message (such as SOAP-based web services). In that respect, it's more general than MoM.
ESB 通常是对消息进行路由、记录、转换和执行其他“技术”(即非业务)功能的层。它可以处理来自消息传递系统的消息(例如基于 JMS 的消息),也可以处理其他类型的消息(例如基于 SOAP 的 Web 服务)。在这方面,它比 MoM 更通用。
Disclaimer: I am an IBM WebSphere consultant - although I am not contributing here in an official capacity.
免责声明:我是一名 IBM WebSphere 顾问 - 尽管我不是以官方身份在这里做出贡献。
回答by James Strachan
ESB with web services in its true form provides Application loose coupling by sending the data through one the elements of the message.
具有真实形式的 Web 服务的 ESB 通过通过消息元素发送数据来提供应用程序松散耦合。
MOM provides not only Application Loose coupling but process loose coupling along.
MOM 不仅提供应用程序松散耦合,还提供过程松散耦合。
ESB comes with additional features supporting Governance centric approach.
ESB 带有支持以治理为中心的方法的附加功能。
Both can be used independently or together depending upon the scenario.
两者可以根据场景单独使用或一起使用。
回答by Albert T. Wong
IBM and Oracle have SOA certifications. Since they're the leaders in the marketplace (Gartner Magic Quadrant), I would read about how they define SOA and ESBs (along with methodology and the components needed to support SOA like Governance, Registry, etc etc)
IBM 和 Oracle 拥有 SOA 认证。由于他们是市场上的领导者(Gartner 魔力象限),我会阅读他们如何定义 SOA 和 ESB(以及支持 SOA 所需的方法论和组件,如治理、注册表等)
回答by Paolo Maresca
I put MOM solutions and ESB solutions on two distinct planes.
我将 MOM 解决方案和 ESB 解决方案放在两个不同的平面上。
I consider MOM a building block for ESB solutions. In fact, ESB solutions reach their own loose coupling and asynchronous communication capabilities, just using the paradigm offered by the specific MOM implementation.
我认为 MOM 是 ESB 解决方案的构建块。事实上,ESB 解决方案实现了它们自己的松耦合和异步通信功能,只需使用特定 MOM 实现提供的范例。
Therefore, MOMs represent solutions for data/events distribution at customized level of QoSs (according to the specific vendor implementation), instead ESBs represent solutions providing capabilities to realize complex orchestrations in a SOA scenario (where we have multiple providers offering their services, and multiple consumers interested in consuming the services offered by the first ones).
因此,MOM 代表在定制的 QoS 级别(根据特定供应商实现)的数据/事件分发解决方案,而 ESB 代表提供在 SOA 场景中实现复杂编排能力的解决方案(我们有多个提供商提供他们的服务,以及多个有兴趣消费第一个提供的服务的消费者)。
Complex orchestrations imply communication between legacy systems, everyone of these with its own data domain representation (rules and services on specific data) and its own communication paradigm (one consumer interact with the ESB using CORBA, another one using WS, and so on).
复杂的编排意味着遗留系统之间的通信,每个系统都有自己的数据域表示(特定数据上的规则和服务)和自己的通信范式(一个消费者使用 CORBA 与 ESB 交互,另一个使用 WS 等等)。
It is clear that ESB represents a more complex architectural solution aimed to provide the abstraction of data-bus(such as the electronic buses that everyone have in his own pc), able to connect a plethora of service providers to a not well specified plethora of service consumers, hiding heterogeneityin (i) data representation and (ii) communication.
很明显,ESB 代表了一种更复杂的架构解决方案,旨在提供数据总线的抽象(例如每个人在他自己的 pc 中都有的电子总线),能够将过多的服务提供商连接到未明确指定的过多的服务消费者,隐藏(i) 数据表示和 (ii) 通信中的异质性。
Sorry for the long post, but the concepts are complex and it is very difficult to be effective and efficient in a short statement.
抱歉,这篇文章很长,但概念很复杂,在简短的陈述中很难有效和高效。
回答by MeTitus
EBS is just yet another buzzword, as is SOA 2.0.
EBS 只是另一个流行词,SOA 2.0 也是如此。
You can have a ESB system easily implemented with normal Web Services with a queue behind them. You can have message routing and or orchestration with SOA 1.0 (Tibco, BizzTalk), one things does not stop the other really. More importantly, it is the semantics given to the messages exchanged in the system that play an important role, in this case events. Messages as events, are triggers about something that happened in your system, so the context is different.
您可以使用带有队列的普通 Web 服务轻松实现 ESB 系统。您可以使用 SOA 1.0(Tibco、BizzTalk)进行消息路由和/或编排,一件事并不能真正阻止另一件事。更重要的是,赋予系统中交换的消息的语义起着重要作用,在这种情况下是事件。作为事件的消息是关于系统中发生的事情的触发器,因此上下文是不同的。