Project Home
SourceForge
Join us
About this page
details
What is Message-Oriented Middleware?
A formal definition for Message-Oriented Middleware can be provided as "a client/server infrastructure that increases the interoperability, portability, and flexibility of an application by allowing the application to be distributed over multiple heterogeneous platforms. It reduces the complexity of developing applications that span multiple operating systems and network protocols by insulating the application developer from the details of the various operating system and network interfaces- Application Programming Interfaces (APIs) that extend across diverse platforms and networks are typically provided by the MOM" [Reference 1].
So, MOMs are a middleware layer that allow applications to send messages to each other. Applications have an 'Outbox' and 'Inbox' on the MOM system, and they check the Inbox for incoming messages, while putting the messages to be sent in the 'Outbox'. An easy analogy for MOMs is actually email exchange between several persons. Each person assign others tasks and send the results of these tasks by email. MOMs perform the same functionality except that the persons are replaced by applications.
What is Solstice?
Solstice is a MOM application that uses regular emails to send messages from one point of the application network to the other. This allows easy implementation since Solstice can directly take advantage of existing network architectures to convey information between one node to another. As a MOM system, Solstice not only transports information to another, it also stores messages requests in outgoing and incoming queues, which are the only way the application can access the messages. Solstice also provides guaranteed processing, meaning that one a request is given to Solstice for delivery to another application node, the delivery will happen (obviously the succes/failure of the task in the remote application itself is independent of the MOM).
The format of the message to pass between applications is not defined by Solstice, since Solstice only relays these messages without interpretation. Applications must define a common format that each of them can understand (There exist many such formats, SOAP for example).
One Solstice server can handle several applications. The only restriction is that the Solstice server is locally accessible from the application since the interface between those is using RMI/CORBA. In case on wide area networks (which would me the main use of Solstice), a Solstice server needs to exist for each LAN. Each of those servers would then pass the messages to each other using regular email.
Who needs Solstice?
Obviously, it is possible to have the different applications communicate directly with each other. In case these applications are separated by firewalls or through the internet, this causes many extra overhead and risks in fail-over and security. With Solstice, the only requirement for an application to communicate to a remote network is that both are linked by SMTP/email. This directly applies to the Internet, and while security may be an issue, Solstice provides the necessary features to encrypt all information.
When the applications can connect to each other directly, Solstice still shows several advantages over direct application-to-application communication:
- It is asynchronous
- It guarantees delivery and provide fail-over mechanisms
- It allows heterogeneous applications to communicate with each other (the only requirement is to define a common task format, which would be the responsibility of the application developers)
- It prevents the applications to communicate directly with each other, which may be required for security reasons. One application just asks Solstice to send a message, and the other application checks with the other Solstice system if there is any incoming message and processes them.
Furthermore, if Solstice already exists, the application developers will not need to write the messaging layer of their application. All that they would do is implement the Solstice interface to allow their application to communicate to Solstice.
But the real advantage of Solstice is when it is used between several applications running on remote sites. All that is required in this case is an email connection between those. Solstice will take advantage of this infrastrucure to act as a robust communication layer. In the case of the Internet, it is a substancial benefit in security since you do not need the hosts to be visible from the outside world, they will just send emails to each other. Obviously, Solstice provides encryption to protect those sensitive messages.
Case Of Use
Database replication
Let us imagine that site A runs a database server. Site B, which is a remote site sometimes needs some data from site A. Connecting directly to site A may cause performance issues, and could be an issue while site A is down. A good solution to this kind of problem is to replicate the database from host A to host B. If the database does not have a very high update activity, Solstice would provide a way to keep the data on site B in sync with the original data (with a reasonable lag), while ensuring complete data integrity and security.
Distributed computing
If one system of super computers process extensive calculations and they need each other's results, Solstice could be used to pass the information between them. To some extent, this could be used in projects similar to SETI@home.
Enterprise system federated workflow
Imagine several enterprise systems running workflows. Solstice would be a good candidate to provide a bridge between those systems, in order to run federated tasks. For example when a user on site A completes their activity, this fires a new workflow or advances a running one on site B. Solstice has been designed keeping in mind all security and fail-over mechanism required by entreprise systems.

Architecture
The only communication channel between the external application and Solstice is the Application interface. This is used to submit requests that are to be sent to remote nodes, check for incoming messages and perform other actions like checking delivery status, etc.architecture schema

All requests that involve remote hosts will be addressed by the Queue Manager. This one either passes the incoming entries from the queue to the application, or create a new one in the outgoing queue as per the application request. Since queue items contain critical data, a persistence and recovery mechanism has been designed.

For outgoing requests, the Notification Manager polls the outgoing queue and forward the requests to the Notifiers. Note that these can be redundant and use different email servers in order to provide a fail-save architecture. Notifiers pass the request to the ourgoing mail server using SMTP.

Regarding incoming requests, Listener processes periodically poll the email servers (which may be different than the ones used for outgoing messages) using POP or IMAP and pass incoming messages to the Listener Manager that will parse it and create a corresponding entry in the incoming queue. This entry is then available to the application through the Application Interface.

References
1 - Rao, B.R. "Making the Most of Middleware." Data Communications International 24, 12 (September 1995): 89-96.
Valid CSS!
Valid XHTML 1.0!
SourceForge.net Logo