diff --git a/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java b/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java index a19e89902d..42246d6fb6 100644 --- a/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java +++ b/activemq-core/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java @@ -566,9 +566,16 @@ public abstract class DemandForwardingBridgeSupport implements NetworkBridge, Br ConsumerInfo info = (ConsumerInfo) data; BrokerId[] path = info.getBrokerPath(); + if (info.isBrowser()) { + if (LOG.isDebugEnabled()) { + LOG.info(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + ", browsers explicitly suppressed"); + } + return; + } + if (path != null && path.length >= networkTTL) { if (LOG.isDebugEnabled()) { - LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + ", restricted to " + networkTTL + " network hops only : " + info); + LOG.debug(configuration.getBrokerName() + " Ignoring sub from " + remoteBrokerName + ", restricted to " + networkTTL + " network hops only : " + info); } return; } diff --git a/activemq-core/src/test/java/org/apache/activemq/usecases/BrowseOverNetworkTest.java b/activemq-core/src/test/java/org/apache/activemq/usecases/BrowseOverNetworkTest.java index f796dfd0b5..94d9244fa2 100644 --- a/activemq-core/src/test/java/org/apache/activemq/usecases/BrowseOverNetworkTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/usecases/BrowseOverNetworkTest.java @@ -51,23 +51,25 @@ public class BrowseOverNetworkTest extends JmsMultipleBrokersTestSupport { sendMessages("BrokerA", dest, MESSAGE_COUNT); - browseMessages("BrokerB", dest); + Thread.sleep(1000); - Thread.sleep(2000); + int browsed = browseMessages("BrokerB", dest); + + Thread.sleep(1000); MessageConsumer clientA = createConsumer("BrokerA", dest); MessageIdList msgsA = getConsumerMessages("BrokerA", clientA); msgsA.waitForMessagesToArrive(MESSAGE_COUNT); - Thread.sleep(2000); + Thread.sleep(1000); MessageConsumer clientB = createConsumer("BrokerB", dest); MessageIdList msgsB = getConsumerMessages("BrokerB", clientB); msgsB.waitForMessagesToArrive(MESSAGE_COUNT); LOG.info("A+B: " + msgsA.getMessageCount() + "+" + msgsB.getMessageCount()); - assertEquals(MESSAGE_COUNT, msgsA.getMessageCount() - + msgsB.getMessageCount()); + assertEquals("Consumer on Broker A, should've consumed all messages", MESSAGE_COUNT, msgsA.getMessageCount()); + assertEquals("Broker B shouldn't get any messages", 0, browsed); } public void testConsumerInfo() throws Exception { @@ -185,6 +187,7 @@ public class BrowseOverNetworkTest extends JmsMultipleBrokersTestSupport { startAllBrokers(); brokers.get("BrokerA").broker.waitUntilStarted(); + brokers.get("BrokerB").broker.waitUntilStarted(); brokers.get("BrokerC").broker.waitUntilStarted(); brokers.get("BrokerD").broker.waitUntilStarted();