Spring Integration, WebSphere Application Server and the TopicConnectionFactory in a Cluster (Active-Active)
so, something i recently came across with when setting up a TopicConnectionFactory on WebSphere is the difference between Cluster level and Node level. when setting up a QueueConnectionFactory, you can set once at the Cluster level, and all the Nodes replicate the setup and it all works fine. This is not the case with the TopicConnectionFactory.
The ClientID concept in a TopicConnectionFactory (that is, the unique ID for the subscription side of things) doesn't play nice across the Cluster if set at the Cluster level. Essentially only one of the Nodes in the Cluster becomes the subscriber and receives messages where the other Nodes throw warnings that the subscription is in use. (which is true)
To get around this, set the TopicConnectionFactory at the Node level, giving each one a unique ClientID. All the rest of the settings can stay the same (JMS name, topic string, etc.). A suggested format for the ClientID is [application].node.[number] to help you easily track and clean up subscriptions.
Remember, this is for an Active-Active cluster where each Node in it is Active and semi-autonomous (can handle their own processing independently).