String sourceAddress = RandomUtil.randomString();
String sourceQueue = RandomUtil.randomString();
String targetAddress = RandomUtil.randomString();
String targetQueue = RandomUtil.randomString();
HornetQServerControl serverControl = createManagementControl();
checkNoResource(ObjectNameBuilder.DEFAULT.getBridgeObjectName(name));
assertEquals(0, serverControl.getBridgeNames().length);
ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(UnitTestCase.INVM_CONNECTOR_FACTORY));
ClientSessionFactory csf = locator.createSessionFactory();
ClientSession session = csf.createSession();
session.createQueue(sourceAddress, sourceQueue);
session.createQueue(targetAddress, targetQueue);
serverControl.createBridge(name,
sourceQueue,
targetAddress,
null, // forwardingAddress
null, // filterString
HornetQClient.DEFAULT_RETRY_INTERVAL,
HornetQClient.DEFAULT_RETRY_INTERVAL_MULTIPLIER,
HornetQClient.DEFAULT_RECONNECT_ATTEMPTS,
false, // duplicateDetection
1, // confirmationWindowSize
HornetQClient.DEFAULT_CLIENT_FAILURE_CHECK_PERIOD,
connectorConfig.getName(), // liveConnector
false,
false,
null,
null);
checkResource(ObjectNameBuilder.DEFAULT.getBridgeObjectName(name));
String[] bridgeNames = serverControl.getBridgeNames();
assertEquals(1, bridgeNames.length);
assertEquals(name, bridgeNames[0]);
BridgeControl bridgeControl = ManagementControlHelper.createBridgeControl(name, mbeanServer);
assertEquals(name, bridgeControl.getName());
assertTrue(bridgeControl.isStarted());
// check that a message sent to the sourceAddress is put in the tagetQueue
ClientProducer producer = session.createProducer(sourceAddress);
ClientMessage message = session.createMessage(false);
String text = RandomUtil.randomString();
message.putStringProperty("prop", text);
producer.send(message);
session.start();
ClientConsumer targetConsumer = session.createConsumer(targetQueue);
message = targetConsumer.receive(5000);
assertNotNull(message);
assertEquals(text, message.getStringProperty("prop"));
ClientConsumer sourceConsumer = session.createConsumer(sourceQueue);
assertNull(sourceConsumer.receiveImmediate());
serverControl.destroyBridge(name);
checkNoResource(ObjectNameBuilder.DEFAULT.getBridgeObjectName(name));
assertEquals(0, serverControl.getBridgeNames().length);
// check that a message is no longer diverted
message = session.createMessage(false);
String text2 = RandomUtil.randomString();
message.putStringProperty("prop", text2);