ActiveMQ纯静态路由配置,用来在两台服务器之间透明的传输消息。例如这里有两台服务器A和B,我们在A服务器上新建的消息队列,要传输到B服务器上。这样我们就需要采用纯静态的路由配置。这种模式下,A服务器的消息直接传递给B服务器,A服务器的生产消息,直接当场消费给B服务器,而B服务器接收到的A服务器消息(相对A服务器是个生产者)则要等到B服务器上有人过来消费。
首先安装消息服务器A和B,注意在B服务器的activemq.xml配置文件里,配置端口为和A服务器端口不一致的。例如A服务器端口为61616,那么B服务器可以配置为61617。同样的,jetty.xml里也需要配置web服务器的端口地址和A服务器不要冲突。
配置A服务器的activemq.xml文件,设置纯静态路由方式,注意这段配置需要写在持久化配置<persistenceAdapter>前。
<networkConnectors>
<networkConnector uri="static:(tcp://localhost:61617)" staticBridge="true">
<staticallyIncludedDestinations>
<queue physicalName=">"/>
</staticallyIncludedDestinations>
</networkConnector>
</networkConnectors>
以上代码,说明传递地址为B服务器(61617端口),注意这里的staticBridge参数设定了静态的路由。staticallyIncludedDestinations规定也要传递的队列或者广播。这里采用<queue physicalName=">"/>是所有的队列消息。如果写成例如<queue physicalName="foo,bar"/>则只同步上述两者消息。
下面传输队列消息到A服务器,可见A服务器直接透明传递消息(消费掉)
B服务器接收到消息,等待消费。