You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Michael Zamir (JIRA)" <ji...@apache.org> on 2011/08/11 15:11:27 UTC
[jira] [Issue Comment Edited] (AMQ-3446) Network of brokers does
not pass messages when networkTTL is bigger then 1
[ https://issues.apache.org/jira/browse/AMQ-3446?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13083057#comment-13083057 ]
Michael Zamir edited comment on AMQ-3446 at 8/11/11 1:10 PM:
-------------------------------------------------------------
Nice work Victor:)
In my words:
we have 3 brokers, *A*, *B* and *C*.
Each of them is connected to the other in a network connector
<broker name="*A*" >
<networkConnector name="*toBrokerB*" uri="static:(tcp://brokerB:61618" networkTTL="*2*" />
<networkConnector name="*toBrokerC*" uri="static:(tcp://brokerC:61618" networkTTL="*2*" />
</broker>
<broker name="*B*" >
<networkConnector name="*toBrokerA*" uri="static:(tcp://brokerA:61618" networkTTL="*2*" />
<networkConnector name="*toBrokerC*" uri="static:(tcp://brokerC:61618" networkTTL="*2*" />
</broker>
<broker name="*C*" >
<networkConnector name="*toBrokerA*" uri="static:(tcp://brokerA:61618" networkTTL="*2*" />
<networkConnector name="*toBrokerB*" uri="static:(tcp://brokerB:61618" networkTTL="*2*" />
</broker>
Client is registered on topic X into brokerA
*brokerA* then register on topic X to *broker B*
*brokerB* then register on topic X to *broker C*
If you produce message on topic *X* to *brokerC* , the client consumer will receive the message.
But then, if you stop *brokerB* and send/produce message to topic *X* on *brokerC*, the client consumer won't receive the message.
was (Author: michzem):
Nice work Victor:)
In my words:
we have 3 brokers, *A*, *B* and *C*.
Each of them is connected to the other in a network connector
<broker name="*A*" >
<networkConnector name="toBrokerB" uri="static:(tcp://brokerB:61618" networkTTL="*2*" />
<networkConnector name="toBrokerC" uri="static:(tcp://brokerC:61618" networkTTL="*2*" />
</broker>
<broker name="*B*" >
<networkConnector name="toBrokerA" uri="static:(tcp://brokerA:61618" networkTTL="*2*" />
<networkConnector name="toBrokerC" uri="static:(tcp://brokerC:61618" networkTTL="*2*" />
</broker>
<broker name="*C*" >
<networkConnector name="toBrokerA" uri="static:(tcp://brokerA:61618" networkTTL="*2*" />
<networkConnector name="toBrokerB" uri="static:(tcp://brokerB:61618" networkTTL="*2*" />
</broker>
Client is registered on topic X into brokerA
*brokerA* then register on topic X to *broker B*
*brokerB* then register on topic X to *broker C*
If you produce message on topic *X* to *brokerC* , the client consumer will receive the message.
But then, if you stop *brokerB* and send/produce message to topic *X* on *brokerC*, the client consumer won't receive the message.
> Network of brokers does not pass messages when networkTTL is bigger then 1
> --------------------------------------------------------------------------
>
> Key: AMQ-3446
> URL: https://issues.apache.org/jira/browse/AMQ-3446
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.4.1, 5.4.2, 5.5.0
> Reporter: VIctor Perepelitsky
> Labels: broker, network, networkBridge, networkConnector, ttl
> Attachments: activemqTest.zip
>
>
> (Unit test is attached to prove the case)
> Given 3 brokers A, B and C.
> Each broker is connected to the others by a network bridge (so we have 3 brokers that are connected to each other)
> The networkTTL is 2 on all network connectors.
> Start broker A and B
> Subscribe consumer on A
> Start Broker C
> Stop Broker B
> Publish message to C
> Expected result:
> The consumer that is subscribed on A receives the message
> Actual result:
> Sometimes it works and sometimes the consumer does not receive the message.
> Additional info:
> From my understanding the problem appears since a broker subscribes as a consumer to other brokers only when there is a consumer that subscribed to this broker, but it does not try to renew subscription to other brokers when some (another) broker in its network fails (or stopped).
> So we see the following situation:
> Client subscribed on topic X on A, A subscribed on topic X on B, B subscribed on topic X on C
> When we stop B, A does not subscribe on topic X on C and the message of topic X cannot pass from C to A.
> This BUG does not occur when networkTTL is 1 because subscription route in a network will be not be greater then 2
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira