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

来源:百度文库 编辑:神马文学网 时间:2024/04/30 00:09:43

 

                                          


 

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

 

  • 大小: 34.3 KB