ABIS Infor - 2013-01
WebSphere MQ, is there any other messaging option out there?
Messaging is the foundation of Message-Oriented Middleware (MOM). Messaging is a confusing category, meaning there is no common source code (cfr. DCE) and there is no common set of specifications (cfr. Corba). Adding to the confusion, there are more than 18 sometimes drastically different products gathered under the umbrella of message-oriented middleware. These products encompass both message passing and message queuing technologies. The message passing products are an interesting technology, but are not the subject of this article.
Defining Message Queuing
IBM describes message queuing as a software architecture that allows programs to communicate via message queues rather than by calling each other directly. Messages are placed in queues, which can be memory- or disk-based, so that programs can run independently, at different speeds, in different locations and without a logical connection between them. This description does not address any implementation details, leaving software suppliers and corporate application developers to their own interpretation of the definition of message queuing.
"Enterprise" message queuing systems typically provide enhanced resilience functionality to ensure that messages do not get "lost" in the event of a system failure. It's worth paying attention to what "persistent messages" mean. For some messaging implementations, it simply means the message will be persisted if it isn't consumed, this doesn't mean you won't loose messages (often a lot more than a few) on a hard failure.
There is a Java standard called Java Message Service, which has several proprietary and free software implementations. For messaging systems that are JMS compatible, persistent delivery means "guaranteed" i.o.w. the send is synchronous and written to disk before its delivered to any consumer(s).
In a nutshell
- About Message Queues
- Allows message to persist until delivery
- Concept of message persistency originates from TP monitors
- Reliable management of transaction requests
- Recoverable queue ('stable memory of elements') for client/server
- Queue repository, queue manager
- About Message Delivery
- Configuration of message delivery options per queue
- Guaranteed message delivery
- MOM saves pending messages on persistent storage
- Non functional requirements that very often play an important role when looking into MOM software:
- High availability
- Scalability and Load Balancing
- Secure and authenticated exchange
Naming some names
- Commercial products
- IBM Websphere MQ
- TIBCO EMS - TIBCO Rendezvous
- Oracle Advanced Queuing (AQ)
- BEA MessageQ
- Microsoft Message Queue Server (MSMQ)
- Sonic MQ
Common focus on:
- Guaranteed message delivery features
- Scalability regarding message throughput
- Few standardization attempts. JMS interface available.
- These products also provide for the non functional requirements mentioned earlier.
- There are a number of open source choices of messaging middleware systems, including:
- Apache Qpid
- RabbitMQ is one of the leading implementations of the AMQP protocol (along with Apache Qpid)
- JBoss Messaging currently continued as HornetQ
- Apache ActiveMQ is in the middle ground.
- Fuse Message Q Enterprise, based on Apache ActiveMQ
- Sun Open Message Queue
- JORAM (Java Open Reliable Asynchronous Messaging)
- Check the products interpretation and implementation of persistence
- Check whether there is support for the non functional requirements mentioned.
- Message Queuing as a Service can be an option, names in this case can be StormMQ, IronMQ or Amazon SQS.
The general remarks made for the previous group are even more true in this case.
Looking for an messaging product means making a distinction between message passing and message queuing, furthermore you will have to evaluate the quality of the products consider based on a comparison of the techniques available to provide for message persistence, guaranteed delivery, resilience/availability, scalability, security mechanisms and OS platform support.
If this product study leads you to choose for WebSphere MQ then you can find more technical detail in our courses:
WebSphere MQ fundamentals course (see http://www.abis.be/html/en0760.html)
WebSphere MQ z/OS system administration (see http://www.abis.be/html/en1054.html)
WebSphere MQ administration for distributed platforms (see http://www.abis.be/html/en1228.html)