After reading ActiveMQ Message Groups feature (, I'm a little confused about how it works in a clustered environment.

The basic premise as far as I can see is that messages of a particular type (defined by the JMSXGroupID, set in a message) are all sent to a specific consumer.

If I have 2 clients/consumers that I want to be connected to the broker to provide both resiliency and performance, using message groups means, all messages of a certain type will be pinned to one of the two consumers. If that consumer goes down, messages of that type will then be pinned to another consumer. Whilst this satisfies the resiliency criteria, this creates redundancy, in that one consumer is doing nothing most of the time & thus not helping to improve performance.

Does this mean when choosing Message Groups, you have to be aware that you are sacrificing performance by being able to load balance a broker across multiple consumers for the benefit of providing guaranteed processing order of messages of a particular type?