Consultor Eletrônico



Kbase 21714: SonicMQ: Clustering and Durable Subscriptions
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   5/6/2003
SUMMARY:

This Solution applies to SonicMQ versions 3.x and 4.0. It explains how the SonicMQ Clustering feature behaves with durable subscriptions.

EXPLANATION:

SonicMQ has the ability to group several brokers within a cluster. This allows load balancing at connect time as well as increased fault tolerance. However to manage durable subscriptions and queues, you must always connect to the broker that hosts the specified subscriptions and queues. This is true even if the broker is part of a cluster. Thus, you cannot use the interbroker configuration server to manage the durable subscriptions and queues hosted by other brokers that are members of the cluster.

Also durable subscriptions are hosted on the different brokers of the cluster separately. Messages sent to a topic in a cluster are only directed to the brokers on which a durable subscription exists. If, for fault tolerance purposes, you need the messages also sent to the other brokers in the cluster, then you need to have the durable subscriptions separately existing on the other brokers prior to the messages being published.

Messages are consumed on the different brokers in the cluster the same way. Thus the messages stay on the different brokers where the durable subscription exists until they are either consumed separately or they expire. This is because there is no way to guarantee that the acknowledgment of a consumed message is received by the other cluster members should the network line between the brokers in the cluster break.

SOLUTION:

There are several ways to coordinate the message consumption -- each case requiring that you maintain a list of messages consumed by the application. The list can be held locally on the consuming clients in queues or in topics on the same or different brokers. Before designing such a system however, fault probabilities compared to the required fault tolerance should be taken into consideration. The system designer should be aware of the fact that the greater the effort, the greater the system safety that can be achieved; keeping in mind of course that no system, at least theoretically, can be absolutely and 100% assured in this regard.


References to Written Documentation:

SonicMQ Installation and Administration Guide
SonicMQ Deployment Guide
SonicMQ Programming Guide