Hey,

We use both topics and queues alongside selectors, ActiveMQ 5.2, and we
were intending to go live using a network of brokers and the clients
using the failover: protocol.

Unfortunately, due to how conduit subscriptions work we will start with
a single broker for now, until we can figure out a good way of doing it.
The problem is that conduit subscriptions make it difficult to use
either topics or queues depending on if you have it set to on or off.

For instance, with conduit subscriptions turned off, you get duplicate
messages. This quickly gets out of hand if you add more brokers. If you
have two consumers on broker A and send a message to their topic on
broker B, each consumer receives the message twice. If you add another
broker and send the message to one of the brokers that is remote to the
consumers each consumer now gets 6 messages. Add another consumer and
each consumer now gets the message 12 times, etc. It very quickly gets
out of hand, so having conduit subscriptions turned off is a no go.

On the other hand, with conduit subscriptions turned on you now run into
problems with queues. With two consumers on broker A and one consumer on
broker B the messages get distributed unevenly, if 20 messages are sent
to broker B its lone consumer gets 10 messages, and the other 10 are
sent to broker A where each consumer only gets 5 messages each.
Furthermore if you are using selectors (which we are) then if it so
happened that the 10 messages that went to the consumers on broker A
didn't match the selectors then those 10 messages would just be stuck on
the queue on broker A. So having conduit subscriptions turned on is
firstly impractical since the messages to queues are distributed
unevenly, and if you are using selectors it doesn't work at all.

So the situation we are in is that we can't have conduit subscriptions
turned on because of our queues and we can't have it turned off because
of our topics. Yes we could refactor and stop using selectors, but our
messages would still be distributed unevenly.

It strikes me that if conduit subscriptions could be turned on and off
independently between queues and topics things would work; we could have
it turned on for topics and off for queues, and everything would work.

For those of you that have looked more at the ActiveMQ internals than I
have, would this be a difficult change to make?


--
Mats Henrikson
Software Engineer
SunGard Kiodex

Think before you print


Reply via email to