2016年1月28日星期四

ActiveMQ_009:再谈Network Connector 配置参数conduitSubscriptions的含义(摘录+整理)

1. 部署拓扑图如下:
和上一篇文章的拓扑图唯一不同的是Queue变成了Topic,其它都一样。

2. Broker-1上的activemq.xml的networkConnectors配置片段如下:

<networkConnectors>
 <networkConnector
  name="T:broker1->broker2"
  uri="static:(tcp://localhost:61626)"
  duplex="false"
  decreaseNetworkConsumerPriority="false"
  networkTTL="2"
  conduitSubscriptions="false"
  dynamicOnly="true">
  <excludedDestinations>
   <queue physicalName=">" />
  </excludedDestinations>
 </networkConnector>
 <networkConnector
  name="T:broker1->broker3"
  uri="static:(tcp://localhost:61636)"
  duplex="false"
  decreaseNetworkConsumerPriority="false"
  networkTTL="2"
  conduitSubscriptions="false"
  dynamicOnly="true">
  <excludedDestinations>
   <queue physicalName=">" />
  </excludedDestinations>
 </networkConnector>
</networkConnectors>
 

3. 启动Broker-1、Broker-2、Broker-3
在Broker-1的Console上,看到2个Network Connector已经建立。

4. 启动持久化订阅Subscriber-1、Subscriber-2、Subscriber-3
在Broker-2的Console上,看到1个Subscriber:Subscriber-1。
 
在Broker-3的Console上,看到2个Subscriber:Subscriber-2、Subscriber-3。

 在Broker-1的Console上,看到3个Subscriber:Subscriber-1、Subscriber-2、Subscriber-3。

5. 启动Producer
在Broker-3的Console上,看到有重复的消息(Message ID相同),由于ActiveMQ不允许有重复消息,这些重复的消息将被丢弃。

那么,为什么会有重复的消息呢?
因为从Broker-1的角度看,Subscriber-1、Subscriber-2、Subscriber-3都被看成独立的订阅者,因此要向这三个订阅者发送相同的消息,由于Subscriber-2和Subscriber-3都与Broker-3连接,因此消息就重复了。
在Broker-1的Console上,消息入了10条,消费了10条。

 在Broker-3的Console上,消息入了20条,消费了10条。
 要想消除这个重复消息的错误也很简单,只要设置  conduitSubscriptions="true"

 在Broker-1的Console上,这次只看到2个Subscriber:Broker-2、Broker-3。
 在Broker-1的Console上,可以看到2个Subscriber各自入了10条消息,消费了10条消息。
  在Broker-3的Console上,可以看到2个Subscriber各自入了10条消息,消费了10条消息。

参考文献:
1. http://akuntamukkala.blogspot.com/2014/02/activemq-network-of-brokers-explained.html
2. http://akuntamukkala.blogspot.com/2014/02/activemq-network-of-brokers-explained_28.html
3. http://akuntamukkala.blogspot.com/2014/03/activemq-network-of-brokers-explained.html
4. http://akuntamukkala.blogspot.com/2014/03/activemq-network-of-brokers-explained_26.html
5. http://akuntamukkala.blogspot.com/2014/05/activemq-network-of-brokers-explained.html

没有评论: