From 9d6bc3a5d8e8433258b766738d7512a2826e8ccb Mon Sep 17 00:00:00 2001 From: gtully Date: Fri, 11 Nov 2016 12:01:54 +0000 Subject: [PATCH] [no jira] add replay policy to draining broker to allow drain to origin --- .../apache/activemq/network/DrainBridgeTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/network/DrainBridgeTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/network/DrainBridgeTest.java index 851dcb9466..0dc998280b 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/network/DrainBridgeTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/network/DrainBridgeTest.java @@ -18,6 +18,8 @@ package org.apache.activemq.network; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.broker.region.policy.PolicyEntry; +import org.apache.activemq.broker.region.policy.PolicyMap; import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQQueue; @@ -45,6 +47,17 @@ public class DrainBridgeTest { NetworkConnector drainingNetworkConnector = drainingBroker.addNetworkConnector("static:(" + target.getTransportConnectorByScheme("tcp").getPublishableConnectString() + ")"); drainingNetworkConnector.setStaticBridge(true); drainingNetworkConnector.setStaticallyIncludedDestinations(Arrays.asList(new ActiveMQDestination[]{new ActiveMQQueue("*")})); + + // ensure replay back to the origin is allowed + PolicyMap policyMap = new PolicyMap(); + PolicyEntry defaultEntry = new PolicyEntry(); + defaultEntry.setExpireMessagesPeriod(0); + ConditionalNetworkBridgeFilterFactory filterFactory = new ConditionalNetworkBridgeFilterFactory(); + filterFactory.setReplayWhenNoConsumers(true); + defaultEntry.setNetworkBridgeFilterFactory(filterFactory); + policyMap.setDefaultEntry(defaultEntry); // applies to all destinations + drainingBroker.setDestinationPolicy(policyMap); + drainingBroker.start(); System.out.println("Local count: " + drainingBroker.getAdminView().getTotalMessageCount() + ", target count:" + target.getAdminView().getTotalMessageCount());