Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
5.13.2
-
None
-
None
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.