Message Oriented Middleware (MoM) Vs. Enterprise Service Bus (ESB)

25,509

Solution 1

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.

I'd recommend reading about the Enterprise Integration Patterns which 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 ActiveMQ provides a loosely coupled reliable exchange of messages. Then you can use Apache Camel to implement the Enterprise Integration Patterns for smart routing, transformation, orchestration, working with other technologies and so forth.

Solution 2

I put MOM solutions and ESB solutions on two distinct planes.

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.

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).

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).

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 heterogeneity in (i) data representation and (ii) communication.

Sorry for the long post, but the concepts are complex and it is very difficult to be effective and efficient in a short statement.

Solution 3

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.

Disclaimer: I am an IBM WebSphere consultant - although I am not contributing here in an official capacity.

Share:
25,509
a-sak
Author by

a-sak

Updated on February 14, 2020

Comments

  • a-sak
    a-sak about 4 years

    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.

    Here is what I want to know

    1) Any good links online which can help me in this regard.

    2) Can someone tell me where it makes sense to use one over the other.

    Any help would be useful.