This defect was identified when proxying an outbound queue bridge's foreign connection through a load balancer with no available cluster nodes and is reported in the ActiveMQ broker log file with following DEBUG level event message:
DEBUG 2016-June-22 15:54:25,165 JmsConnector:627 - Failed to establish initial [foreign, 24388] connection for JmsConnector [javax.jms.JMSException: Cannot send, channel has already failed: tcp://0.0.0.0:61616]
In ActiveMQ v5.12.1 release this is triggered by a ConnectionFailedException being thrown on line 190 of class org.apache.activemq.network.SimpleJmsQueueConnector and can be replicated by running the attached JUnit test.
Attached ActiveMQConnection subclass ensures that resource clean up is performed if any exception is thrown during an invocation of the start() method. Consequently instances are eligible for garbage collection if the underlying TCP connection is successfully established by constructor and then reset by peer before the connection is put into service.
Is it possible to include this behaviour within the ActiveMQConnection class itself in future release?