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&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,而是外部防火墙阻止了它的工作。
我们正在使用带有 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 and p2) 帖子,其中指出 CachingConnectionFactory 不能很好地与故障转移协议配合使用。但是,我认为此问题已从那时起得到解决,因为我们确实看到如果代理关闭,则代理之间的连接会移动。
我们没有看到在代理之间平衡连接。当我们仍在使用我们自己的自定义 JMS 实现时,我们确实看到了这种行为。那么它可能是 Spring 或 JmsTemplate 中的内容吗?
实际问题不是 ActiveMQ 或 Spring,而是外部防火墙阻止了它的工作。