On 05/05/2010 02:04 PM, Kerry Bonin wrote:
I've been walking down a rat hole and thought I'd take a moment to ask
the list how I should proceed - I could use some advice from someone
with deeper QPID experience...

My requirement is relatively simple - I've got a number of clients
using QPID , all currently Windows platforms, with clients in C++,
Python, and Java.  We need the system to handle broker process / host
failure, preferably in a manner transparent to the client applications
(although we can insert code between the client applications and the
QPID client library.)

We can run multiple brokers, and had planned on deploying a broker on
each server box, and wanted at least some sort of failover solution.
Our problem - how to proceed on Windows?

QPID Clustering is built over Corosync, which I believe limits it to a
subset of *nix platforms.

Federation with failover would work, but Federation doesn't work on
Windows.  (I'm still looking at QPID-2199...)

Failover code in progress appears tied to clustering, which is out for Windows.

Should I just roll my own standalone failover, forking if necessary to
expose lower features?  (I don't want to do this!)  Can I leverage the
Failover code in the trunk and manage amq.failover without the
Corosync dependent code?  Are there any simpler approaches I'm
missing?

Comments greatly appreciated...


The client side of failover doesn't involve corosync at all. Clients subscribe to the amq.failover exchange to get updates on the list of brokers they can use for failover, and if they detect a connection failure they iterate over this list till they get a connection. All this is standard AMQP.

The cluster plugin on the broker generates those updates based on corosync membership changes. If you had an alternate plugin generating membership updates then it could drive the existing client failover with no changes on the client. Of course this assumes some non-corosync source for the membership info but you'd need that anyway in a roll-your-own scheme.

I'd be happy to help out if you're interested in implementing something like this. Generalizing the failover-list notification scheme is preferable to forking and I think will be useful in other contexts as well.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to