activeMQ指南针_“神奇”的自动发现功能

             图一 

      自动这个功能一直给人一种有点“神奇”的感觉,尤其是真正好用的自动功能。我们在activeMQ中就出现了自动发现功能,下面我们具体分析一下该功能的实现原理。        为了便于说明,我们用图一所示的消息传输拓扑图来进行分析。图中有两个activeMQ、一个客户端(消息发送者/消费者)。我们使用activeMQ的自动发现功能让它们来发现彼此的存在。自动发现功能的好处在activeMQ里面,我想主要能使用在当目前的activeMQ集群处理能力不行的时候,可以动态加入新的activeMQ来分担负载,这就可以很好的水平扩展。       首先,我们对图一中的带颜色部分做一个说明,带颜色的小矩形都代表着能发送和接收广播数据包的通讯端口,有‘S’标志的表示该端口主要向外发送广播数据包,有‘R’表示该端口只接收广播数据包。具体自动发现过程描述如下:activeMQ通过端口向外广播它们自己,当某activeMQ收到一个广播包后,解析该广播包,并从中建立activeMQ之间的通讯桥梁。而当某客户端收到包含activeMQ的基本信息的广播包后,它也会把这个信息保存住,在需要进行重连接的时候进行重连接。     讲到activeMQ的自动发现功能,我们就不得不说到它的配置文件,具体内容如下:  1.如果想拥有向外发送广播信息的话,也就是图中带‘S’的端口,修改配置文件中的< transportConnector  …/>,这个地方得加一个参数discoveryUri="multicast://default"。  2.如果某activeMQ想能自动发现其他activeMQ,也就是图中带‘R’的端口,修改配置文件中的<networkConnector  …/>,这个地方uri要类似这样设置uri="multicast://default"。       activeMQ在实现的时候也有点意思,我们所说的带‘S’或带‘R’的端口,它们的功能都在同一个类中实现:MulticastDiscoveryAgent。而客户端的相关实现,则在FailoverTransport类中完成主要功能。

相关文章

相关标签/搜索