ActiveMQ代理网络使用存储和转发的概念,即,在客户端运行的时候,启动一个本地代理,消息通常被存储在本地代理中,然后才通过网络
转发到其他代理.这就是说,如果因为网络连接问题导致消息不能被及时投送,那么当网络连接
恢复并重建后,代理可以重新发送任何未及时投送的消息到远程代理上.
这种方式就像是在客户端处建立起一个本地的临时中心,消息发送给临时中心,之后就不在管,而临时中心和真正的中心之类的消息通信则由临时中心自己完成。可以简单的把这个临时看成是缓存一样的东西。
ActiveMQ代理配置中网络连接器和消息持久化配置的顺序很重要.网络连接,消息持久化和连接器
需要按照下面的顺序配置:
1 网络连接 -- 网络练剑需要在消息存储之前建立好
2 消息存储 -- 需要在传输连接之前配置
3 传输连接 -- 应当是代理配置后最后配置的
示例
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://activemq.apache.org/schema/core"> <broker brokerName="receiver" persistent="true" useJmx="true"> <networkConnectors> <networkConnector uri="static:(tcp://backoffice:61617)"/> </networkConnectors> <persistenceAdapter> <kahaDB directory = "activemq-data"/> </persistenceAdapter> <transportConnectors> <transportConnector uri="tcp://localhost:62002"/> </transportConnectors> </broker> </beans>
高可用的企业网络,就如图这样
网络侦测
当尝试与远程代理之间的网络连接时,该链接使用一个侦测工具来定位远程代理以便建立(重建)连接.
ActiveMQ提供两种类型的网络侦测:
1 动态网络 -- 使用多点传送与会合协议
2 静态网络 -- 使用一系列的静态的代理URL来建立连接
动态方式
<networkConnectors>
<networkConnector uri="multicast://default"/>
</networkConnectors>
代理会广播自己信息,另外一个代理收到这个广播信息,发现组名和自己一样就会建立连接。
静态侦测方式建立网络连接的.尽管这种配置方式要求更多一点的配置
并且这种静态方式可能不适合大型网络,但是通常大部分部署环境中都使用了这种配置.静态侦测需要一个代理URL列表,然后根据列表中的顺序尝试连接每一远程代理.
例如,可以使用下面的代码示例,配置本地主代理连接到远程主机,并且在远程主机代理失效时
连接到远程备机代理
<networkConnectors>
<networkConnector uri="static:(tcp://remote-master:61617,tcp://remote-slave:61617)"/>
</networkConnectors>
http://jackyin5918.iteye.com/blog/1983768