ActiveMQ rebalanceClusterClients 不适用于 Spring Boot JMS
Posted
技术标签:
【中文标题】ActiveMQ rebalanceClusterClients 不适用于 Spring Boot JMS【英文标题】:ActiveMQ rebalanceClusterClients not working with Spring Boot JMS 【发布时间】: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 中的某些东西?
【问题讨论】:
【参考方案1】:实际的问题不是 ActiveMQ 或 Spring,而是外部防火墙阻止了它的工作。
【讨论】:
以上是关于ActiveMQ rebalanceClusterClients 不适用于 Spring Boot JMS的主要内容,如果未能解决你的问题,请参考以下文章