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; }
private void addDivert(Configuration serverConfig, String source, String target, boolean exclusive) { List<DivertConfiguration> divertConfigs = serverConfig.getDivertConfigurations(); DivertConfiguration newDivert = new DivertConfiguration(); newDivert.setName("myDivert"); newDivert.setAddress(source); newDivert.setForwardingAddress(target); newDivert.setExclusive(exclusive); divertConfigs.add(newDivert); }
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); } }
@Test public void testShowAddressBindings() throws Exception { // Create bindings SimpleString address = new SimpleString("address"); server.addAddressInfo(new AddressInfo(address, RoutingType.MULTICAST)); server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue1"), null, true, false); server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue2"), null, true, false); server.createQueue(address, RoutingType.MULTICAST, new SimpleString("queue3"), null, true, false); DivertConfiguration divertConfiguration = new DivertConfiguration(); divertConfiguration.setName(address.toString()); divertConfiguration.setAddress(address.toString()); server.deployDivert(divertConfiguration); ShowAddress showAddress = new ShowAddress(); showAddress.setName(address.toString()); showAddress.setBindings(true); showAddress.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error))); System.out.println(output.toString()); }
@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 protected ActiveMQServer createServer(final boolean realFiles, final Configuration configuration, final long pageSize, final long maxAddressSize, final Map<String, AddressSettings> settings) { DivertConfiguration divertConf = new DivertConfiguration().setName("notifications-divert").setAddress("*.Provider.*.Agent.*.Status").setForwardingAddress("Notifications").setExclusive(true); configuration.addDivertConfiguration(divertConf); ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(configuration, realFiles)); if (settings != null) { for (Map.Entry<String, AddressSettings> setting : settings.entrySet()) { server.getAddressSettingsRepository().addMatch(setting.getKey(), setting.getValue()); } } AddressSettings defaultSetting = new AddressSettings().setPageSizeBytes(pageSize).setRedeliveryDelay(0).setMaxSizeBytes(maxAddressSize).setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE).setRedistributionDelay(0).setAutoCreateQueues(true).setAutoCreateAddresses(true); server.getAddressSettingsRepository().addMatch("#", defaultSetting); return server; }
@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("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);
@Test public void testInjectedTransformer() throws Exception { final SimpleString ADDRESS = new SimpleString("myAddress"); final String DIVERT = "myDivert"; ServiceRegistryImpl serviceRegistry = new ServiceRegistryImpl(); Transformer transformer = new Transformer() { @Override public Message transform(Message message) { return null; } }; serviceRegistry.addDivertTransformer(DIVERT, transformer); ActiveMQServer server = addServer(new ActiveMQServerImpl(null, null, null, null, serviceRegistry)); server.start(); server.waitForActivation(100, TimeUnit.MILLISECONDS); server.createQueue(ADDRESS, RoutingType.MULTICAST, SimpleString.toSimpleString("myQueue"), null, false, false); server.deployDivert(new DivertConfiguration().setName(DIVERT).setAddress(ADDRESS.toString()).setForwardingAddress(ADDRESS.toString())); Collection<Binding> bindings = server.getPostOffice().getBindingsForAddress(ADDRESS).getBindings(); Divert divert = null; for (Binding binding : bindings) { if (binding instanceof DivertBinding) { divert = ((DivertBinding) binding).getDivert(); } } assertNotNull(divert); assertEquals(transformer, divert.getTransformer()); } }
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 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);