Apache ActiveMQ故障转移协议

时间:2012-05-30 06:06:50

标签: replication message activemq failover broker

为什么java只能在activemq中提供对故障转移协议的支持,而不是其他语言。 我怀疑在像failover://(tcp://host1:61616,tcp://host2:61616)?randomize=false这样的故障转移协议中,客户端还使用了一个内部URL,如tcp://host1:61616,然后代理如何知道该呼叫是否正在使用某些故障转移协议,然后经纪人如何决定是否需要复制消息?

2 个答案:

答案 0 :(得分:2)

请理解failover协议仅用于客户端的重新连接逻辑,而AMQ代理甚至不知道客户端是否使用failover协议。

来自official AMQ documentation

  

故障转移传输层在任何一个上面重新连接逻辑   其他运输工具。

     

故障转移配置语法允许您指定任意数量的   复合uris。故障转移传输随机选择其中一个   复合URI并尝试建立与它的连接。如果是的话   没有成功,或者如果它随后失败,那么新的连接就是   建立在列表中的其他uris之一。

不确定复制的意思是什么,但是根据官方文档

  

故障转移传输默认跟踪事务。机上   在重新连接时重播交易。

答案 1 :(得分:1)

使用ActiveMQ建立HA解决方案有不同的方案。

如果客户端使用故障转移协议连接到host1,host2,则还需要为HA设置代理设置。

一种解决方案是将host1和host2集群在Active-Active解决方案中。然后,当消息被要求时,消息总是被传播 - 队列在所有amq代理中的整个集群中共享。

否则,如果不主动使用主动 - 主动解决方案,则可以设置主从解决方案,其中两个代理(host1和host2)共享数据区域(例如,使用数据库进行持久性或共享SAN磁盘) )。

有更多的设置组合,但故障转移协议假设整个解决方案可以处理消息到达不同的代理,如果一个故障。据我所知,从经纪人的角度来看,故障转移协议中没有其他魔力。