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&amp;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的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ知识概括

ActiveMQ知识概括

activemq连接过多导致变慢

为啥activemq有两个端口

ActiveMq入门实例

ActiveMQ入门实例