Some brokers (e.g. SonicMQ) allow you to configure the topic so only one consumer with a particular client id can connect. When the active component fails, the broker allows one of the others to connect. But this isn't standard in JMS; you'd have to look at your broker's documentation to see if that's possible.
You can either distribute the work with Queues instead of Topics or use a management tool (via JMX) to start/stop the listener containers to ensure there's only one consumer of a particular type.
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware