broker之间的通过静态发现(static discovery)和动态发现(dynamic discovery)来维持彼此发现
- 静态语法
static:(uri1,uri2,uri3,...)?options
在activemq.xml文件中增加
<networkConnectors>
<networkConnector name="local network" uri="static://(tcp://192.168.146.129:61616,tcp://192.168.146.129:61618,tcp://192.168.146.129:61617)"/>
</networkConnectors>
3台机器进行了broker的集群。
2016-08-19 04:12:47,937 | INFO | Establishing network connection from vm://localhost?async=false to tcp://192.168.146.129:61616 | org.apache.activemq.network.DiscoveryNetworkConnector | main
2016-08-19 04:12:47,982 | INFO | Connector vm://localhost started | org.apache.activemq.broker.TransportConnector | main
2016-08-19 04:12:48,021 | INFO | Establishing network connection from vm://localhost?async=false to tcp://192.168.146.129:61618 | org.apache.activemq.network.DiscoveryNetworkConnector | main
2016-08-19 04:12:48,043 | INFO | Establishing network connection from vm://localhost?async=false to tcp://192.168.146.129:61617 | org.apache.activemq.network.DiscoveryNetworkConnector | main
这样如果一台broker宕机后,另外两台broker仍然可以继续工作。当宕机的哪台broker再启动起来后,仍然可以继续提供服务。
客户端程序,连接broker集群表达式如下:
failover:(uri1,...,uriN)?key=value
or
failover:uri1,...,uriN
个人总结:
所谓staic network,就是在知道每台服务器IP、端口情况下,配置到activemq.xml中。然后这几台机器间会进行一个相互的路由,然后根据activemq自己内部定义的机制进行着运转,这样就形成了一个可靠的集群,一台服务处先问题,其他服务器就会替代运行。
消费者使用时也需要配置上所有的服务IP、端口。