Newsletter sign-up
View all newsletters

Sign up for our technology specific newsletters.

Enterprise Java
Email Address:

Write your own MOM!

Write your own general-purpose, message-oriented middleware

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
MOM is misunderstood, and MOM gets no credit. You may have heard this one before, but in the distributed systems arena it's actually true! This is because message-oriented middleware (MOM) has traditionally not enjoyed the same level of sophistication and support as other technologies used in distributed communications frameworks.

But times are changing. With the introduction of sophisticated, robust vendor offerings, interest in MOM systems is growing rapidly. Good MOM implementations provide a high-level applications interface, quality of service guarantees, and a host of services such as security, message queueing, and directory support that are necessary for "industrial-strength" distributed communications.

Distributed communications frameworks

The purpose of a distributed communications framework is to provide a good way for the parts of a distributed system to communicate. Object-oriented frameworks accomplish this task by providing distributed objects with a way to message each other.

The distributed object-oriented frameworks that get the most attention are those that model messaging as method calls. CORBA and RMI are two excellent examples of this type of framework (see Resources). These systems are often called remote procedure call (RPC) systems. The magic of these systems is that they make remote procedure (or method) calls appear to be local procedure calls (LPCs).

RPCs are architected on the client/server pattern. For example, CORBA objects that expose methods to be called by remote objects are called (and are) servers.

Introducing MOM

In contrast to RPCs, MOMs don't model messages as method calls; instead, they model them as events in an event delivery system. Clients send and receive events, or "messages," via APIs that the MOM provides. The MOM may present directory services that let clients look up another application which is acting as a server, or it may present all-purpose "channels" that let a group of clients communicate as peers, or it may present both options.

All applications communicate directly with each other using the MOM. Messages generated by applications are meaningful only to other clients because the MOM itself is only a message router (and in some cases a message queueing system as well).

MOM passes messages between applications, which can be
peers or client/server. In RPC systems, client objects
call methods of server objects.

MOMs come in all shapes and sizes
All MOMs share two fundamental characteristics: they enable message-passing and the message-passing is non-blocking. Beyond these basics, vendors can implement any number of different interfaces and services.

Many MOMs provide a publish-and-subscribe interface to enable applications to publish and receive messages that they are interested in. This interface can take the form of a channels-based system or a more simple system in which a client registers the types of messages it is interested in receiving.

Basic MOMs provide direct messaging only, no additional services. Advanced MOMs provide message queueing and guaranteed delivery, along with security, cross-platform data marshalling, scalability, and other benefits.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources
  • General info about MOM
  • Technical information about MOM
  • Commercial MOMs