Hi, I have a set of brokers setup with failover configuration as follows:
roker A ---> (failover) --> Broker B1 or Broker B2 Application connected to Broker A send event messages via topic, i.e. MyEventTopic. Snapshot of key activemq Broker A configuration ------------------------------------------------------------------------------ <broker xmlns="http://activemq.apache.org/schema/core" brokerName="BrokerA" dataDirectory="${activemq.data}" useJmx="true" useVirtualDestSubs="true" useVirtualDestSubsOnCreation="true"> <networkConnectors> <networkConnector name="ToB1orToB2" duplex="false" userName="abc" password="cdef" prefetchSize="50000" networkTTL="5" uri="masterslave:(tcp://B1Broker:61616,tcp://B2Broker.hq.tnb.com.my:61616)" useVirtualDestSubs="true"> <dynamicallyIncludedDestinations> <topic physicalName="MyEventTopic"/> </dynamicallyIncludedDestinations> </networkConnector> another network connector for Queue using DynamicallyIncludedDestinations as well </networkConnectors> --------------------------------------------------------------------------------------------- So, on Broker A ActiveMQ web console, I could see 2 network bridges. One for the queue and the other for the topic. The queue related network connector works fine. However, the topic related network bridges seem to drop (i.e. the connection drop) and sometimes, when the connection drop, the message enqueue and dequeued are not the same. Suspect messages are lost. The error from ActiveMQ logs: ------------------------------------------------------------------------------------------------------------ 2019-02-12 18:35:55,028 | INFO | Network connection between vm://localhost#34232 and tcp://BrokerB1:61616 shutdown due to a local error: {} | org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ Transport: tcp://BrokerB1/BrokerA:61616@48226 java.util.concurrent.CancellationException at java.util.concurrent.FutureTask.report(FutureTask.java:121)[:1.8.0_131] at java.util.concurrent.FutureTask.get(FutureTask.java:192)[:1.8.0_131] at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.gotToTheStore(AbstractStoreCursor.java:137)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.recoverMessage(AbstractStoreCursor.java:124)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.cursors.AbstractStoreCursor.tryAddMessageLast(AbstractStoreCursor.java:237)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor.addMessageLast(AbstractPendingMessageCursor.java:93)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.cursors.StoreQueueCursor.tryAddMessageLast(StoreQueueCursor.java:104)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.cursors.AbstractPendingMessageCursor.addMessageLast(AbstractPendingMessageCursor.java:93)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.Queue.doPendingCursorAdditions(Queue.java:770)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.Queue.tryOrderedCursorAdd(Queue.java:875)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.Queue.doMessageSend(Queue.java:854)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.Queue.send(Queue.java:725)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:505)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:468)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:293)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.virtual.CompositeDestinationFilter.doForward(CompositeDestinationFilter.java:120)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.virtual.CompositeDestinationFilter.send(CompositeDestinationFilter.java:100)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:505)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:468)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:293)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:153)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:96)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:293)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:158)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:581)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:768)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:336)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:200)[activemq-broker-5.15.2.jar:5.15.2] at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)[activemq-client-5.15.2.jar:5.15.2] at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)[activemq-client-5.15.2.jar:5.15.2] at java.lang.Thread.run(Thread.java:748)[:1.8.0_131] ---------------------------------------------------------------------------------------------------------- At Broker B1 or B2 : The activemq configuration is as follows: ---------------------------------------------------------------------- 1. use VirtualDestStubs <broker xmlns="http://activemq.apache.org/schema/core" brokerName="BrokerB1" dataDirectory="${activemq.data}" useVirtualDestSubs="true" useVirtualDestSubsOnCreation="true"> 2. use destinationInterceptor to forward topic to 2 queues. <compositeTopic name="MyEventTopic"> <forwardTo> <queue physicalName="MyEventQueue1" /> <queue physicalName="MyEventQueue2" /> </forwardTo> </compositeTopic> 3. I see lots of duplicate message for MyEventQueue1 an MyEventQueue2 Question: 1. What is the possible causes for the frequent network bridge connection drops, and how do I avoid duplicate queue messages at Broker B1 or B2 ? Thanks -TC -- Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html