// Send messages
sendMessages("BrokerA", dest, 1);
// Get message count
MessageIdList msgsA = getConsumerMessages("BrokerA", clientA);
MessageIdList msgsB = getConsumerMessages("BrokerB", clientB);
MessageIdList msgsC = getConsumerMessages("BrokerC", clientC);
msgsA.waitForMessagesToArrive(1);
msgsB.waitForMessagesToArrive(1);
msgsC.waitForMessagesToArrive(1);
// ensure we don't get any more messages
Thread.sleep(2000);
assertEquals(1, msgsA.getMessageCount());
assertEquals(1, msgsB.getMessageCount());
assertEquals(1, msgsC.getMessageCount());
// restart to ensure no hanging messages
LOG.info("Restarting brokerA");
BrokerItem brokerItem = brokers.remove("BrokerA");
if (brokerItem != null) {
brokerItem.destroy();
}
BrokerService restartedBroker = createAndConfigureBroker(new URI("broker:(tcp://localhost:61616)/BrokerA?useJmx=false"));
bridgeAndConfigureBrokers("BrokerA", "BrokerB", dynamicOnly, networkTTL, conduitSubs);
bridgeAndConfigureBrokers("BrokerA", "BrokerC", dynamicOnly, networkTTL, conduitSubs);
restartedBroker.start();
waitForBridgeFormation();
clientA = createConsumer("BrokerA", createDestination("Consumer.A.TEST.FOO", false));
LOG.info("recreated clientA");
Thread.sleep(2000);
sendMessages("BrokerA", dest, 10);
msgsA = getConsumerMessages("BrokerA", clientA);
msgsA.waitForMessagesToArrive(10);
msgsB.waitForMessagesToArrive(11);
msgsC.waitForMessagesToArrive(11);
// ensure we don't get any more messages
Thread.sleep(2000);
LOG.info("MessagesA: " + msgsA.getMessageIds());
assertEquals(10, msgsA.getMessageCount());
assertEquals(11, msgsB.getMessageCount());
assertEquals(11, msgsC.getMessageCount());
// restart to ensure no hanging messages
LOG.info("Restarting brokerA again");
brokerItem = brokers.remove("BrokerA");
if (brokerItem != null) {
brokerItem.destroy();
}
restartedBroker = createAndConfigureBroker(new URI("broker:(tcp://localhost:61616)/BrokerA?useJmx=false"));
bridgeAndConfigureBrokers("BrokerA", "BrokerB", dynamicOnly, networkTTL, conduitSubs);
bridgeAndConfigureBrokers("BrokerA", "BrokerC", dynamicOnly, networkTTL, conduitSubs);
restartedBroker.start();
waitForBridgeFormation();
clientA = createConsumer("BrokerA", createDestination("Consumer.A.TEST.FOO", false));
LOG.info("recreated clientA again");
Thread.sleep(2000);
msgsA = getConsumerMessages("BrokerA", clientA);
// ensure we don't get any more messages
Thread.sleep(5000);
LOG.info("Extra MessagesA: " + msgsA.getMessageIds());
assertEquals(0, msgsA.getMessageCount());
assertEquals(11, msgsB.getMessageCount());
assertEquals(11, msgsC.getMessageCount());
}