Hello, 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 failures. *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? Thanks… Roger -- View this message in context: http://activemq.2283324.n4.nabble.com/Clustered-Queue-with-JMSXGroupID-tp3934975p3934975.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.