private void parseDivertConfiguration(final Element e, final Configuration mainConfig) { String name = e.getAttribute("name"); String routingName = getString(e, "routing-name", null, Validators.NO_CHECK); String address = getString(e, "address", null, Validators.NOT_NULL_OR_EMPTY); String forwardingAddress = getString(e, "forwarding-address", null, Validators.NOT_NULL_OR_EMPTY); boolean exclusive = getBoolean(e, "exclusive", ActiveMQDefaultConfiguration.isDefaultDivertExclusive()); String transformerClassName = getString(e, "transformer-class-name", null, Validators.NO_CHECK); ComponentConfigurationRoutingType routingType = ComponentConfigurationRoutingType.valueOf(getString(e, "routing-type", ActiveMQDefaultConfiguration.getDefaultDivertRoutingType(), Validators.COMPONENT_ROUTING_TYPE)); TransformerConfiguration transformerConfiguration = null; String filterString = null; NodeList children = e.getChildNodes(); for (int j = 0; j < children.getLength(); j++) { Node child = children.item(j); if (child.getNodeName().equals("filter")) { filterString = getAttributeValue(child, "string"); } else if (child.getNodeName().equals("transformer")) { transformerConfiguration = getTransformerConfiguration(child); } } if (transformerConfiguration == null && transformerClassName != null) { transformerConfiguration = getTransformerConfiguration(transformerClassName); } DivertConfiguration config = new DivertConfiguration().setName(name).setRoutingName(routingName).setAddress(address).setForwardingAddress(forwardingAddress).setExclusive(exclusive).setFilterString(filterString).setTransformerConfiguration(transformerConfiguration).setRoutingType(routingType); mainConfig.getDivertConfigurations().add(config); }
static DivertConfiguration createDivertConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final ModelNode routingNode = DivertDefinition.ROUTING_NAME.resolveModelAttribute(context, model); final String routingName = routingNode.isDefined() ? routingNode.asString() : null; final String address = DivertDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final String forwardingAddress = DivertDefinition.FORWARDING_ADDRESS.resolveModelAttribute(context, model).asString(); final boolean exclusive = DivertDefinition.EXCLUSIVE.resolveModelAttribute(context, model).asBoolean(); final ModelNode filterNode = CommonAttributes.FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; DivertConfiguration config = new DivertConfiguration() .setName(name) .setRoutingName(routingName) .setAddress(address) .setForwardingAddress(forwardingAddress) .setExclusive(exclusive) .setFilterString(filter); final ModelNode transformerClassName = CommonAttributes.TRANSFORMER_CLASS_NAME.resolveModelAttribute(context, model); if (transformerClassName.isDefined()) { config.setTransformerConfiguration(new TransformerConfiguration(transformerClassName.asString())); } return config; }
static DivertConfiguration createDivertConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final ModelNode routingNode = DivertDefinition.ROUTING_NAME.resolveModelAttribute(context, model); final String routingName = routingNode.isDefined() ? routingNode.asString() : null; final String address = DivertDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final String forwardingAddress = DivertDefinition.FORWARDING_ADDRESS.resolveModelAttribute(context, model).asString(); final boolean exclusive = DivertDefinition.EXCLUSIVE.resolveModelAttribute(context, model).asBoolean(); final ModelNode filterNode = CommonAttributes.FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; DivertConfiguration config = new DivertConfiguration() .setName(name) .setRoutingName(routingName) .setAddress(address) .setForwardingAddress(forwardingAddress) .setExclusive(exclusive) .setFilterString(filter); final ModelNode transformerClassName = CommonAttributes.TRANSFORMER_CLASS_NAME.resolveModelAttribute(context, model); if (transformerClassName.isDefined()) { config.setTransformerConfiguration(new TransformerConfiguration(transformerClassName.asString())); } return config; }
@Test public void divertTopicToQueueWithSelectorTest() throws Exception { final String address1 = "bss.order.workorderchanges.v1.topic"; final String address2 = "bss.order.Consumer.cbma.workorderchanges.v1.queue"; final String address3 = "bss.order.Consumer.pinpoint.workorderchanges.v1.queue"; DivertConfiguration dc1 = new DivertConfiguration().setName("WorkOrderChangesCBMA-Divert").setRoutingName("WorkOrderChangesCBMA-Divert").setAddress(address1).setForwardingAddress(address2).setExclusive(false).setRoutingType(ComponentConfigurationRoutingType.ANYCAST); DivertConfiguration dc2 = new DivertConfiguration().setName("WorkOrderChangesPinpoint-Divert").setRoutingName("WorkOrderChangesPinpoint-Divert").setAddress(address1).setForwardingAddress(address3).setExclusive(false).setRoutingType(ComponentConfigurationRoutingType.ANYCAST); server.deployDivert(dc1); server.deployDivert(dc2); JmsConnectionFactory factory = new JmsConnectionFactory(getBrokerQpidJMSConnectionURI()); Connection connection = factory.createConnection(null, null); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Topic topicSource = session.createTopic(address1); javax.jms.Queue queueTarget = session.createQueue(address2); javax.jms.Queue queueTarget2 = session.createQueue(address3); final MessageProducer producer = session.createProducer(topicSource); final TextMessage message = session.createTextMessage("Hello"); message.setStringProperty("filename", "BILHANDLE"); connection.start(); String selector = "filename='BILHANDLE'"; final MessageConsumer consumer = session.createConsumer(queueTarget, selector); final MessageConsumer consumer2 = session.createConsumer(queueTarget2, selector); producer.send(message); TextMessage receivedMessage = (TextMessage) consumer.receive(1000); TextMessage receivedMessage2 = (TextMessage) consumer2.receive(1000); Assert.assertNotNull(receivedMessage); Assert.assertNotNull(receivedMessage2); connection.close(); }
@Override protected Configuration createDefaultConfig(final boolean netty) throws Exception { DivertConfiguration divert = new DivertConfiguration().setName("local-divert").setRoutingName("some-name").setAddress("Source").setForwardingAddress("Dest").setExclusive(true); Configuration config = super.createDefaultConfig(netty).addDivertConfiguration(divert); return config; }
@Override protected void extraServerConfig(Configuration serverConfig) { DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress).setExclusive(isExclusive()); serverConfig.addDivertConfiguration(divertConf); } }
@Override public void createDivert(final String name, final String routingName, final String address, final String forwardingAddress, final boolean exclusive, final String filterString, final String transformerClassName, final Map<String, String> transformerProperties, final String routingType) throws Exception { checkStarted(); clearIO(); try { TransformerConfiguration transformerConfiguration = transformerClassName == null ? null : new TransformerConfiguration(transformerClassName).setProperties(transformerProperties); DivertConfiguration config = new DivertConfiguration().setName(name).setRoutingName(routingName).setAddress(address).setForwardingAddress(forwardingAddress).setExclusive(exclusive).setFilterString(filterString).setTransformerConfiguration(transformerConfiguration).setRoutingType(ComponentConfigurationRoutingType.valueOf(routingType)); server.deployDivert(config); } finally { blockOnIO(); } }
@Override @Before public void setUp() throws Exception { super.setUp(); CoreQueueConfiguration queueConfig = new CoreQueueConfiguration().setAddress(RandomUtil.randomString()).setName(RandomUtil.randomString()).setDurable(false); CoreQueueConfiguration forwardQueueConfig = new CoreQueueConfiguration().setAddress(RandomUtil.randomString()).setName(RandomUtil.randomString()).setDurable(false); divertConfig = new DivertConfiguration().setName(RandomUtil.randomString()).setRoutingName(RandomUtil.randomString()).setAddress(queueConfig.getAddress()).setForwardingAddress(forwardQueueConfig.getAddress()).setExclusive(RandomUtil.randomBoolean()). setTransformerConfiguration(new TransformerConfiguration(AddHeadersTransformer.class.getName())); TransportConfiguration connectorConfig = new TransportConfiguration(INVM_CONNECTOR_FACTORY); Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true).addQueueConfiguration(queueConfig).addQueueConfiguration(forwardQueueConfig).addDivertConfiguration(divertConfig).addConnectorConfiguration(connectorConfig.getName(), connectorConfig); server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, false)); server.start(); }
final String forwardAddress3 = "forwardAddress3"; DivertConfiguration divertConf1 = new DivertConfiguration().setName("divert1").setRoutingName("thename1").setAddress(testAddress).setForwardingAddress(forwardAddress1); DivertConfiguration divertConf2 = new DivertConfiguration().setName("divert1").setRoutingName("thename2").setAddress(testAddress).setForwardingAddress(forwardAddress2); DivertConfiguration divertConf3 = new DivertConfiguration().setName("divert2").setRoutingName("thename3").setAddress(testAddress).setForwardingAddress(forwardAddress3);
final String forwardAddress3 = "forwardAddress3"; DivertConfiguration divertConf1 = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress1).setExclusive(true); DivertConfiguration divertConf2 = new DivertConfiguration().setName("divert2").setRoutingName("divert2").setAddress(testAddress).setForwardingAddress(forwardAddress2).setExclusive(true); DivertConfiguration divertConf3 = new DivertConfiguration().setName("divert3").setRoutingName("divert3").setAddress(testAddress).setForwardingAddress(forwardAddress3).setExclusive(true);
final String forwardAddress3 = "forwardAddress3"; DivertConfiguration divertConf1 = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress1).setExclusive(true); DivertConfiguration divertConf2 = new DivertConfiguration().setName("divert2").setRoutingName("divert2").setAddress(testAddress).setForwardingAddress(forwardAddress2).setExclusive(true); DivertConfiguration divertConf3 = new DivertConfiguration().setName("divert3").setRoutingName("divert3").setAddress(testAddress).setForwardingAddress(forwardAddress3);
backupConfig.addQueueConfiguration(new CoreQueueConfiguration().setAddress(TARGET_QUEUE).setName(TARGET_QUEUE).setRoutingType(RoutingType.ANYCAST)); DivertConfiguration divertConfiguration = new DivertConfiguration().setName("Test").setAddress(SOURCE_QUEUE).setForwardingAddress(TARGET_QUEUE).setRoutingName("Test");
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress);
DivertConfiguration divertConf1 = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress1); DivertConfiguration divertConf2 = new DivertConfiguration().setName("divert2").setRoutingName("divert2").setAddress(testAddress).setForwardingAddress(forwardAddress2); DivertConfiguration divertConf3 = new DivertConfiguration().setName("divert3").setRoutingName("divert3").setAddress(testAddress).setForwardingAddress(forwardAddress3);
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress).setExclusive(true);
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress);
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress);
.setRoutingName("some-name").setAddress(myTopic.toString()) .setForwardingAddress(forwardingAddress.toString()).setExclusive(false); server.deployDivert(divert);
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress).setExclusive(true);
DivertConfiguration divertConf = new DivertConfiguration().setName("divert1").setRoutingName("divert1").setAddress(testAddress).setForwardingAddress(forwardAddress);