10.ActiveMQ 静态网络连接配置

1. ActiveMQ 的 networkConnector 是什么

        在某些情况下,需要多个 ActiveMQ 的 Broker 来做集群。此时就会涉及到 Broker 到 Broker 之间的通信,这个就被称之为ActiveMQ 的 networkConnector。

        ActiveMQ 的 networkConnector 默认是单向的,一个 Broker 在一端发送消息,另一个 Broker 在另一端接收消息。这就是所谓的"桥接"。ActiveMQ 也支持双向链接,对于两个Broker创建一个双向的通道,不仅可以发送消息而且也能从相同的通道来接收消息 。

        如下图所示,通过 networkConnector 可以将两个 Broker 组成一个集群模式,保持两个 Broker 之间的网络通信连接。那么生产者A 生产数据至 Broker-1,消费者 A 便可以在 Broker-2 上消费到生产者A 生产的数据生产者B 生产数据至 Broker-2,消费者 B 也可以在 Broker-1 上消费到生产者B 生产的数据。

10.ActiveMQ 静态网络连接配置_第1张图片

2.networkConnector(静态网络)如何配置

   修改conf/目录下的activemq.xml文件,增加如下配置,即可完成对静态网络的配置,配置如下:

   注意:一定要配置在标签下!!!位置如下图所示


    

10.ActiveMQ 静态网络连接配置_第2张图片

        两个 Broker 之间,通过一个 static 的协议来进行网络连接。一个消费者连接到 Broker-2 的一个地址上,当生产者在 Broker-1 上以相同的地址发送消息时,此时消息便会被转移到 Broker-2 上,也就是说 Broker-1 会将消息转发到 Broker-2 上。

3.ActiveMQ消息回流机制

        当我们在 Broker-1 上生产10条数据,在Broker-2 上使用 receive() 的方式消费消息(不使用 listener的方式 监听)。当消费了2条数据后,因为一些原因导致 Broker-2 挂掉了,那么此时还有8条数据没有被消费。

        通过静态网络连接, 在 Broker-2 上消费, Broker-1 会将自己的10条数据全部转发至 Broker-2 。此时 Broker-1 上没有消息,Broker-2 上有10条数据。当 Broker-2 仅仅消费2条消息就挂掉了,此时会有8条数据阻塞在 Broker-2。在这种情况下,因为 Broker-1 上已经没有数据了,此时如果从 Broker-1 上也是无法消费的。那么这种情况下,只有等到 Broker-2 服务重启正常后,8条阻塞的消息才能被消费。这明显没有起到高可用的效果。此时 ActiveMQ 为我们提供了一种消息回流机制。可以在 Broker-2 挂掉之后,直接通过 Broker-1 来消费阻塞在 Broker-2 上的8条数据。

       修改conf/目录下的activemq.xml文件,增加如下配置,即可完成对消息回流的配置,配置如下:

配置在标签中标签下,配置位置如下图所示:


    
        
    

10.ActiveMQ 静态网络连接配置_第3张图片

       如图,表示对所有队列设置回流操作。即可完成在 Broker-2 挂掉之后,直接通过 Broker-1 来消费阻塞在 Broker-2 上的8条数据。通过配置 1.networkConnector 2.息回流机制 ,从而满足 Broker 的高可用


附录:ActiveMQ动态网络连接 

      ActiveMQ 也支持动态网络连接,使用 multicast (广播)协议将一个 Service服务 和其他的 Broker 的 Service 服务相互连接起来。multicast 能够自动的发现其他的 Broker,从而替代了使用 static 功能列表 Brokers。

      优点:用 multicast 协议可以在网络中频繁的添加和删除 IP 不会有影响。

      缺点:自动的链接地址和过渡的消耗网络资源

      具体如何配置,可以自行百度,后期我也会再次尝试配置。

你可能感兴趣的:(ActiveMQ)