activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roger Fischer <>
Subject Clustered Queue with JMSXGroupID
Date Mon, 24 Oct 2011 23:27:37 GMT

I am not sure I fully understand ActiveMQ clustering, particularly once
JMSXGroupID is also considered. Thus I am describing my problem first, and
then ask for clarification.

A single queue. Persistent.

A remote producer creates messages fast (10 msg/sec).

Consumers process messages slow (1 msg/sec). Thus 10 consumers are required
to keep up.

Challenge 1: Some messages (< 1%) are related and need to be processed in
order. If two related messages are less than 10 messages apart, they can be
processed in parallel. That’s a problem.

Obvious solution:  use JMSXGroupID.

So far so good.

Challenge 1+: The earlier message could fail processing and be re-queued
with a delay. 

*Question*: Does JMSXGroupID handle that?

Now on to clustering. Consumers are clustered, with load balancing
(scalability) and failover (availability).

Challenge 2a: related messages must still be processed by the same consumer
(and thus routed to the same node).

*Question*:  Presumably a broker will need to be run on each node. Are the
brokers sharing JMSXGroupID routing info, and thus forwarding to another
broker if the JMSXGroupID consumer is on a different node?

Challenge 2b: related messages must be processed in order across node

*Question*: Do the brokers coordinate the failover and ensure that messages
already routed to the failed node (and presumably persisted there) are
delivered to an alternate consumer /before/ new messages with the same
JMSXGroupID are consumed?

The standard JMS solution we are considering is to use MDBs with selectors,
and file store and MDB migration. Obviously it is very complex to manage the
selectors for various deployment sizes, and a nuisance to have to configure
migratable targets on every node.

In conclusion, can ActiveMQ handle our scenario, and if yes, how?



View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message