【发布时间】:2019-11-13 01:46:22
【问题描述】:
我们正在使用带有 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&wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true">
<publishedAddressPolicy>
<publishedAddressPolicy publishedHostStrategy="IPADDRESS" />
</publishedAddressPolicy>
</transportConnector>
但是,所有客户端都连接到代理列表中的第一个代理,而不是其中一些客户端重新平衡到第二个代理。
之前我们没有使用 Spring JMS 实现,而是直接使用 ActiveMQ 库。此实现确实允许重新平衡连接的客户端。
Spring 中有什么东西阻止了重新平衡吗?也许是 CachingConnectionFactory?
编辑 2019-07-10
我在 SO 上发现了这两个(p1 和 p2)帖子,其中指出 CachingConnectionFactory 不能很好地与故障转移协议配合使用。但是,我认为从那以后这个问题已经得到解决,因为如果代理关闭,我们确实看到代理之间的连接移动。
我们没有看到跨代理平衡连接。当我们仍在使用我们自己的自定义 JMS 实现时,我们确实看到了这种行为。那么它可能是 Spring 或 JmsTemplate 中的某些东西?
【问题讨论】:
标签: jms activemq spring-jms