ActiveMQ(10):ActiveMQ的静态网络链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActiveMQ(10):ActiveMQ的静态网络链接相关的知识,希望对你有一定的参考价值。

一、简介

1.1 ActiveMQ的networkConnector是什么

在某些场景下,需要多个ActiveMQ的Broker做集群,那么就涉及到Broker到Broker的通信,这个被称为ActiveMQ的networkConnector。

1.2 单向与双向链接

ActiveMQ的networkConnector默认是单向的,一个Broker在一端发送消息,另一Broker在另一端接收消息。这就是所谓的“桥接”。 

ActiveMQ也支持双向链接,创建一个双向的通道对于两个Broker,不仅发送消息而且也能从相同的通道来接收消息,通常作为duplex connector来映射,如下:

    技术分享

1.3 discovery(即:发现)的概念

  一般情况下,discovery是被用来发现远程的服务,客户端通常想去发现所有可利用的brokers;另一层意思,它是基于现有的网络Broker去发现其他可

用的Brokers。

  有两种配置Client到Broker的链接方式,一种方式:Client通过Statically配置的方式去连接Broker,

一种方式:Client通过discovery agents来dynamically的发现Brokers

1.4 Static netwprks(即:静态网络链接)

Static networkConnector是用于创建一个静态的配置对于网络中的多个Broker。这种协议用于复合url,一个复合url包括多个url地址。

格式如:static:(uri1,uri2,uri3,...)?key=value

配置示例如下:activemq.xml  (此处配置在61616上)

<networkConnectors>
    <networkConnector userName="liuy" password="123456" name="local network" uri="static://(tcp://192.168.91.8:61616,tcp://192.168.91.8:61676)"/>
</networkConnectors>

Static networkConnector的基本原理示意图:

   技术分享

上图中,两个Brokers是通过一个static的协议来网络链接的。一个Consumer链接到brokerB的一个地址上 ,当Producer在brokerA上以相同

的地址发送消息时,此时它将被转移到brokerB上。也就是,BrokerA会转发消息到BrokerB上。

重启后,访问主节点:http://192.168.91.8:8161 

  技术分享

networkConnector配置的可用属性:

 1:name:默认是bridge

 2:userName:用户名

 3:password:密码

 4:decreaseNetworkConsumerPriority:默认是false。设定消费者优先权,如果为true,网络的消费者优先级降低为-5。

                         如果为false,则默认跟本地消费者一样为0

 5:networkTTL :默认是1 ,网络中用于消息和订阅消费的broker数量

 6:messageTTL :默认是1 ,网络中用于消息的broker数量

 7:consumerTTL:默认是1 ,网络中用于消费的broker数量

 8:conduitSubscriptions :默认true,是否把同一个broker的多个consumer当做一个来处理

 9:dynamicallyIncludedDestinations :默认为空,要包括动态消息地址,类似于excludedDestinations,如:

    <dynamicallyIncludedDestinations>
      <queue physicalName="include.test.foo"/>
      <topic physicalName="include.test.bar"/>
    </dynamicallyIncludedDestinations>

 10:staticallyIncludedDestinations :默认为空,要包括静态消息地址。类似于excludedDestinations,如:

  <staticallyIncludedDestinations>
      <queue physicalName="always.include.queue"/>
    </staticallyIncludedDestinations>

     说明:当我们不希望brokerA的所有消息都发送到brokerB上,可以选择配置此项

 11:excludedDestinations :默认为空,指定排除的地址,示例如下:

    <networkConnectors>
        <networkConnector uri="static://(tcp://localhost:61617)" name="bridge" dynamicOnly="false" conduitSubscriptions="true" decreaseNetworkConsumerPriority="false">
            <excludedDestinations>
                <queue physicalName="exclude.test.foo"/>
                <topic physicalName="exclude.test.bar"/>
            </excludedDestinations>
            <dynamicallyIncludedDestinations>
                <queue physicalName="include.test.foo"/>
                <topic physicalName="include.test.bar"/>
            </dynamicallyIncludedDestinations>
            <staticallyIncludedDestinations>
                <queue physicalName="always.include.queue"/>
                <topic physicalName="always.include.topic"/>
            </staticallyIncludedDestinations>
        </networkConnector>
    </networkConnectors>

 12:duplex :默认false,设置是否能双向通信

 13:prefetchSize :默认是1000,持有的未确认的最大消息数量,必须大于0,因为网络消费者不能自己轮询消息

 14:suppressDuplicateQueueSubscriptions:默认false,如果为true, 重复的订阅关系一产生即被阻止

 15:bridgeTempDestinations :默认true,是否广播advisory messages来创建临时destination

 16:alwaysSyncSend(同步) :默认false,如果为true,非持久化消息也将使用request/reply方式代替oneway方式发送到远程broker。

 17:staticBridge :默认false,如果为true,只有staticallyIncludedDestinations中配置的destination可以被处理。

 18:dynamicOnly:默认是false,如果为true, 持久订阅被激活时才创建对应的网路持久订阅。默认是启动时激活


本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1916697

以上是关于ActiveMQ(10):ActiveMQ的静态网络链接的主要内容,如果未能解决你的问题,请参考以下文章

安装ActiveMQ

2022年官网下安装ActiveMQ最全版与官网查阅方法

ActiveMQ的静态网络配置

ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

静态链接 ActiveMQ-cpp

在没有启用咨询支持的情况下,代理的 activemq 静态网络是不是会停止转发消息?