This is the expected behavior. MQ does not load balance customers, this connection balances them. A connection is the most time-consuming API call, and in the case of a mutually authenticated TLS connection, it may take several seconds. Therefore, a good application design will try to connect once, and then maintain this connection throughout the session. The JMS architecture and Spring framework await this pattern.
The way that MQ provides load balancing (again, not balancing, but rather a circular distribution), is that the client connects the jump from the cluster target queue. A message addressed to this cluster target queue will be cyclically distributed among all instances of this queue.
If this is a request-to-request application, then when listening to requests in these cluster instances of the queue, it refers to the response message using the Reply-To QMgr and Reply-To Queue from the requesting message. In this case, interrogators can fail through QMgr in QMgr if they lose the connection. Listening systems for records in clustered queues are usually not interrupted in all queue managers to ensure that all queue instances are serviced due to transaction recovery.
The short answer is that the CCDT client and MQ are not at all the place of MQ load balancing. The client must establish the connection and hold it as long as possible. Client reconnection and CCDT are only for balancing the connection.
Load balancing is a feature of the MQ cluster. This requires multiple instances of the cluster queue, and they are usually a network move from the client application that places the message.
T.Rob source share