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