ActiveMQ rebalanceClusterClients 不使用 Spring Boot JMS

ActiveMQ rebalanceClusterClients not working with Spring Boot JMS

我们正在使用带有 CachingConnectionFactory 的 Spring JmsTemplate 实现。我们已经配置了故障转移连接-url:

failover:(ssl://172.16.0.11:61616,ssl://172.16.0.12:61616)?maxReconnectDelay=2000

在 ActiveMQ 的传输连接器上,我们启用了选项 "rebalanceClusterClients":

        <transportConnector name="openwire" uri="ssl://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true">
            <publishedAddressPolicy>
                <publishedAddressPolicy publishedHostStrategy="IPADDRESS" />  
            </publishedAddressPolicy>
        </transportConnector>

但是,所有客户端都连接到代理列表中的第一个代理,而不是其中一些客户端重新平衡到第二个代理。

以前我们没有使用Spring JMS 实现,而是直接使用ActiveMQ 库。此实现确实允许重新平衡连接的客户端。

Spring 中是否有什么东西阻止了重新平衡?也许是 CachingConnectionFactory?

编辑 2019-07-10

我在 SO 上找到了这两个 (p1 and p2) 帖子,其中指出 CachingConnectionFactory 不能很好地与故障转移协议配合使用。但是,我认为此问题已从那时起得到解决,因为我们确实看到如果代理关闭,则代理之间的连接会移动。

我们没有看到在代理之间平衡连接。当我们仍在使用我们自己的自定义 JMS 实现时,我们确实看到了这种行为。那么它可能是 Spring 或 JmsTemplate 中的内容吗?

实际问题不是 ActiveMQ 或 Spring,而是外部防火墙阻止了它的工作。