为什么java只能在activemq中提供对故障转移协议的支持,而不是其他语言。
我怀疑在像failover://(tcp://host1:61616,tcp://host2:61616)?randomize=false
这样的故障转移协议中,客户端还使用了一个内部URL,如tcp://host1:61616
,然后代理如何知道该呼叫是否正在使用某些故障转移协议,然后经纪人如何决定是否需要复制消息?
答案 0 :(得分:2)
请理解failover
协议仅用于客户端的重新连接逻辑,而AMQ代理甚至不知道客户端是否使用failover
协议。
故障转移传输层在任何一个上面重新连接逻辑 其他运输工具。
故障转移配置语法允许您指定任意数量的 复合uris。故障转移传输随机选择其中一个 复合URI并尝试建立与它的连接。如果是的话 没有成功,或者如果它随后失败,那么新的连接就是 建立在列表中的其他uris之一。
不确定复制的意思是什么,但是根据官方文档
故障转移传输默认跟踪事务。机上 在重新连接时重播交易。
答案 1 :(得分:1)
使用ActiveMQ建立HA解决方案有不同的方案。
如果客户端使用故障转移协议连接到host1,host2,则还需要为HA设置代理设置。
一种解决方案是将host1和host2集群在Active-Active解决方案中。然后,当消息被要求时,消息总是被传播 - 队列在所有amq代理中的整个集群中共享。
否则,如果不主动使用主动 - 主动解决方案,则可以设置主从解决方案,其中两个代理(host1和host2)共享数据区域(例如,使用数据库进行持久性或共享SAN磁盘) )。
有更多的设置组合,但故障转移协议假设整个解决方案可以处理消息到达不同的代理,如果一个故障。据我所知,从经纪人的角度来看,故障转移协议中没有其他魔力。