我使用的是ActiveMQ 5.4版,我有一个pure master slave configuration。我的从站配置为在发生故障时启动其网络传输连接器。我的客户端使用故障转移协议进行配置,就像文档说的那样:
failover://(tcp://masterhost:61616,tcp://slavehost:61616)?randomize=false
当我的主人死亡时,客户端成功地彻底故障转移到奴隶。问题是我恢复后(即停止从属,复制数据,重新启动主服务器,然后重新启动从服务器),客户端仍在尝试连接到从服务器(该服务器上没有任何打开的网络连接器)点)。因此,客户端在重新启动后永远不会重新连接到主服务器。这是它应该如何工作的吗?
答案 0 :(得分:3)
我也见过这个。如果您使用PooledConnectionFactory,请通过setExpiryTimeout在池化连接上设置到期超时。这里的API文档表明这将强制重新连接到主代理:
允许连接到期,无论负载或空闲时间如何。这对于故障转移以强制重新连接池,重新建立负载平衡或使用主后恢复非常有用