网络连接

针对海量消息所要求的横向扩展性和系统的高可用性,Primeton MQ提供了网络连接模式的集群功能。简单的说,就是通过把多个不同的Broker实例连接在一起,作为一个整体对外提供服务,从而提高整体对外的消息服务能力。通过这种方式连接在一起的Broker实例之间,可以共享队列和消费者列表,从而达到分布式队列的目的。

客户端配置:

failover:(uri1,...,uriN)?key=value 或者 failover:uri1,...,uriN

在客户端的代码示例如下:

ConnectionFactory connectionFactory = new PMQConnectionFactory("admin",
"admin","failover:(tcp://192.168.91.8:61616,tcp://192.168.91.8:61676)?" +
"randomize=false");

服务端静态网络配置

PMQ的NetworkConnector默认是单向的,一个Broker在一端发送消息,另一Broker在另一端接收消息。当然也支持双向,这样对于两个Broker,不仅发送消息而且也能从相同的通道来接收消息。 静态网络链接用于创建一个静态的配置对于网络中的多个Broker。一个复合url包括多个url地址,格式如:static:(uri1,uri2,uri3,...)?key=value。 在pmq.xml中的配置示例如下:

在pmq.xml的Broker节点内添加:

<!—配置网络连接,采用静态发现。duplex=true,意味双向连接,两个Broker则无须配置-->
<networkConnectors>
   <networkConnector name="localNetwork" uri="static://(tcp://127.0.0.1:61616,
                                              tcp://127.0.0.1:61676)" 
                                              duplex="true"/>
</networkConnectors>

服务端动态网络配置

<broker xmlns="http://pmq/schema/core" brokerName="multicast"
                                       dataDirectory="${pmq.base}/data">
  <networkConnectors>
     <networkConnector name="default-nc" uri="multicast://default"/>
  </networkConnectors>
  <transportConnectors>
     <transportConnector name="openwire" uri="tcp://localhost:61616" 
                                         discoveryUri="multicast://default"/>
  </transportConnectors>
</broker>

uri也可以使用其他两种方式:

  • multicast://default
    
  • masterslave:(tcp://host1:61616,tcp://host2:61616,tcp://..)
    

其中masterslave方式的第一个url需要是Master,其他是Slave。

一个Broker的实例内可以配置多个NetworkConnector,如果有两个以上的NetworkConnector指向同一个Broker,则需要显式的指定Name。

results matching ""

    No results matching ""