Messaging technologies have evolved in response to constantly changing corporate IT environments, which have shifted over the past three decades from mainframe systems to client/server applications to Web-based Internet applications. Most JMS-compliant message queuing (MQ) servers support multiple clients and address heterogeneous operating systems, databases and applications. But they fall short of fulfilling some basic scalability requirements imposed by a business's growing needs.
Good products support scalability to address growth requirements. Outstanding products support scalability without compromising the performance and reliability of the overall system. As business conditions necessitate the support of more concurrent users and/or higher throughput (measured in messages/second), the easiest recourse is to invest in more powerful hardware to drive your MQ performance. But while processors and memory costs trend downwards, net performance gains from adding more CPUs and memory do not scale linearly because of well-known bus and memory access latency limitations in multi-CPU-based hardware.
A software solution to address higher performance requirements involves distributing the workload across a cluster of MQ servers mounted as software on different machines. However, clustering MQ servers to meet performance and scalability requirements necessitates a closer inspection of the following issues.
Guaranteed Messaging
Guaranteed messaging ensures that messages are reliably delivered once, and only once, to their intended customers. Guaranteed messaging, traditionally a key requirement for financial and B2B supply chain markets, is increasingly a "must have" for most customers. Additionally, mobile clients need to be able to retrieve their messages on demand--as opposed to having to stay logged on and subscribed to a particular topic all the time. To support an on-demand delivery of messages, they need to be marked as persistent.
Persistent messages must be recovered in the case of an MQ or client failure, and the MQ server must provide the retrieve-on-demand flexibility discussed above. JMS-compliant MQ servers that support guaranteed delivery of persistent messages need to implement an offline storage mechanism for persisting messages to local disk or databases or across storage devices attached to a storage area network (SAN). This storage ensures message recoverability in the event of an MQ or client failure. Storage implementations range from flat files to relational databases to object databases.
-1-