我们正在将Spring JmsTemplate实现与CachingConnectionFactory一起使用。我们已使用故障转移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&wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true">
<publishedAddressPolicy>
<publishedAddressPolicy publishedHostStrategy="IPADDRESS" />
</publishedAddressPolicy>
</transportConnector>
但是,所有客户端都连接到代理列表中的第一个代理,而不是将其中一些重新平衡到第二个代理。
以前,我们没有使用Spring JMS实现,而是直接使用ActiveMQ库。该实现确实允许重新平衡连接的客户端。
Spring中有什么阻止重新平衡吗?也许CachingConnectionFactory?
我在SO上找到了这两篇(p1和p2)帖子,其中指出CachingConnectionFactory在故障转移协议上不能很好地发挥作用。但是,我认为此后此问题已得到解决,因为如果关闭了代理,我们确实会看到代理之间的连接正在移动。
我们看不到经纪人之间的连接平衡。当我们仍在使用自己的定制JMS实现时,确实看到了这种行为。那么可能是Spring或JmsTemplate中的东西吗?
答案 0 :(得分:0)
实际问题不是ActiveMQ或Spring,而是外部防火墙阻止了此工作。