网络连接
针对海量消息所要求的横向扩展性和系统的高可用性,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。