[ 
https://issues.apache.org/jira/browse/AMQ-6784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tomas Pavelka updated AMQ-6784:
-------------------------------
    Description: 
If there are multiple consumers of a single topic in a hub and spoke topology 
where each of the spokes has an embedded broker, then each of the consumers 
receives one message sent to the topic multiple times.

The topology looks like this:

{{
Spoke (broker) -> Hub (broker) <- Spoke (broker)
                                    ^
                            Spoke (broker)         
}}
If one spoke sends a message to a topic and at least two other spokes have 
consumers then they will receive the message multiple times.

The likely cause is that 
org.apache.activemq.network.ConduitBridge#addToAlreadyInterestedConsumers
checks if the incoming ConsumerInfo represents a network subscription
in the topology used it does because the subscription info is passed through 
two brokers

There exists a workaround: if any policy is applied to the destination then 
duplication does not happen. This is because PolicyEntry#enableAudit is true by 
default and is applied to  
org.apache.activemq.broker.region.BaseDestination#enableAudit which is false by 
default.

See the attached unit test which reproduces the issue in ActiveMQ 5.13.2 and 
also demonstrates the workaround. 

  was:
If there are multiple consumers of a single topic in a hub and spoke topology 
where each of the spokes has an embedded broker, then each of the consumers 
receives one message sent to the topic multiple times.

The topology looks like this:

Spoke (broker) -> Hub (broker) <- Spoke (broker)
                                    ^
                            Spoke (broker)         

If one spoke sends a message to a topic and at least two other spokes have 
consumers then they will receive the message multiple times.

The likely cause is that 
org.apache.activemq.network.ConduitBridge#addToAlreadyInterestedConsumers
checks if the incoming ConsumerInfo represents a network subscription
in the topology used it does because the subscription info is passed through 
two brokers

There exists a workaround: if any policy is applied to the destination then 
duplication does not happen. This is because PolicyEntry#enableAudit is true by 
default and is applied to  
org.apache.activemq.broker.region.BaseDestination#enableAudit which is false by 
default.

See the attached unit test which reproduces the issue in ActiveMQ 5.13.2 and 
also demonstrates the workaround. 


> Duplicate messages received in hub and spoke topology
> -----------------------------------------------------
>
>                 Key: AMQ-6784
>                 URL: https://issues.apache.org/jira/browse/AMQ-6784
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.13.2
>            Reporter: Tomas Pavelka
>            Priority: Minor
>         Attachments: HubAndSpokeDuplicateMessages.java
>
>
> If there are multiple consumers of a single topic in a hub and spoke topology 
> where each of the spokes has an embedded broker, then each of the consumers 
> receives one message sent to the topic multiple times.
> The topology looks like this:
> {{
> Spoke (broker) -> Hub (broker) <- Spoke (broker)
>                                     ^
>                             Spoke (broker)         
> }}
> If one spoke sends a message to a topic and at least two other spokes have 
> consumers then they will receive the message multiple times.
> The likely cause is that 
> org.apache.activemq.network.ConduitBridge#addToAlreadyInterestedConsumers
> checks if the incoming ConsumerInfo represents a network subscription
> in the topology used it does because the subscription info is passed through 
> two brokers
> There exists a workaround: if any policy is applied to the destination then 
> duplication does not happen. This is because PolicyEntry#enableAudit is true 
> by default and is applied to  
> org.apache.activemq.broker.region.BaseDestination#enableAudit which is false 
> by default.
> See the attached unit test which reproduces the issue in ActiveMQ 5.13.2 and 
> also demonstrates the workaround. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to