I finally understand where the conduit should happen. I was of the impression
that the conduit happens in broker B (hub) when subscriptions come from C
and D. But that can't happen because there are two bridges (B-C and B-D) and
conduit needs to happen within one bridge.
The conduit needs to happen in the bridge A-B. The reason it does not happen
is that the two ConsumerInfos that come (over one transport connection) have
isNetworkSubscription() returning true.

I suspect the networkSubscription is true because the subscription passed
through two brokers (B, C or B, D). Moreover, if I skip the embedded broker
in C and D then networkSubscription is false and conduit happens within the
A-B bridge and there is no message duplication.

Moreover, if I don't use the embedded broker in A and use it in C and D,
then there is no conduit but also no duplication.

So this topology:

spoke [broker] -> hub [broker] <- spoke [broker]
                                          <- spoke [broker]

Leads to message duplication,

But those two don't:

spoke             -> hub [broker] <- spoke [broker]
                                          <- spoke [broker]

spoke [broker] -> hub [broker] <- spoke 
                                          <- spoke 




--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Duplicate-messages-received-with-ActiveMQ-5-13-2-tp4728627p4729096.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to