private static CoreQueueConfiguration createCoreQueueConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final String queueAddress = QueueDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final ModelNode filterNode = FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; final boolean durable = DURABLE.resolveModelAttribute(context, model).asBoolean(); return new CoreQueueConfiguration() .setAddress(queueAddress) .setName(name) .setFilterString(filter) .setDurable(durable); }
private void deployQueuesFromListCoreQueueConfiguration(List<CoreQueueConfiguration> queues) throws Exception { for (CoreQueueConfiguration config : queues) { try { SimpleString queueName = SimpleString.toSimpleString(config.getName()); ActiveMQServerLogger.LOGGER.deployQueue(config.getName(), config.getAddress(), config.getRoutingType().toString()); AddressSettings as = addressSettingsRepository.getMatch(config.getAddress()); // determine if there is an address::queue match; update it if so int maxConsumers = config.getMaxConsumers() == null ? as.getDefaultMaxConsumers() : config.getMaxConsumers(); boolean isExclusive = config.isExclusive() == null ? as.isDefaultExclusiveQueue() : config.isExclusive(); boolean isLastValue = config.isLastValue() == null ? as.isDefaultLastValueQueue() : config.isLastValue(); SimpleString lastValueKey = config.getLastValueKey() == null ? as.getDefaultLastValueKey() : SimpleString.toSimpleString(config.getLastValueKey()); boolean isNonDestructive = config.isNonDestructive() == null ? as.isDefaultNonDestructive() : config.isNonDestructive(); int consumersBeforeDispatch = config.getConsumersBeforeDispatch() == null ? as.getDefaultConsumersBeforeDispatch() : config.getConsumersBeforeDispatch(); long delayBeforeDispatch = config.getDelayBeforeDispatch() == null ? as.getDefaultDelayBeforeDispatch() : config.getDelayBeforeDispatch(); if (locateQueue(queueName) != null && locateQueue(queueName).getAddress().toString().equals(config.getAddress())) { updateQueue(config.getName(), config.getRoutingType(), config.getFilterString(), maxConsumers, config.getPurgeOnNoConsumers(), isExclusive, isNonDestructive, consumersBeforeDispatch, delayBeforeDispatch, config.getUser(), true); } else { // if the address::queue doesn't exist then create it try { createQueue(new AddressInfo(SimpleString.toSimpleString(config.getAddress())).addRoutingType(config.getRoutingType()), queueName, SimpleString.toSimpleString(config.getFilterString()), SimpleString.toSimpleString(config.getUser()), config.isDurable(), false, false, false, false, maxConsumers, config.getPurgeOnNoConsumers(), isExclusive, isLastValue, lastValueKey, isNonDestructive, consumersBeforeDispatch, delayBeforeDispatch, true, true); } catch (ActiveMQQueueExistsException e) { // the queue may exist on a *different* address ActiveMQServerLogger.LOGGER.warn(e.getMessage()); } } } catch (Exception e) { ActiveMQServerLogger.LOGGER.problemDeployingQueue(config.getName(), e.getMessage()); } } }
private List<CoreQueueConfiguration> parseQueueConfigurations(final Element node, RoutingType routingType) { List<CoreQueueConfiguration> queueConfigurations = new ArrayList<>(); NodeList list = node.getElementsByTagName("queue"); for (int i = 0; i < list.getLength(); i++) { CoreQueueConfiguration queueConfig = parseQueueConfiguration(list.item(i)); queueConfig.setRoutingType(routingType); queueConfigurations.add(queueConfig); } return queueConfigurations; }
/** {@inheritDoc} */ @Override public synchronized void start(StartContext context) throws StartException { try { final ActiveMQServer server = this.activeMQServer.getValue(); server.deployQueue(new SimpleString(queueConfiguration.getAddress()), new SimpleString(queueConfiguration.getName()), SimpleString.toSimpleString(queueConfiguration.getFilterString()), queueConfiguration.isDurable(), temporary); } catch (Exception e) { throw new StartException(e); } }
private void addQueue(Configuration serverConfig, String address, String name) { List<CoreAddressConfiguration> addrConfigs = serverConfig.getAddressConfigurations(); CoreAddressConfiguration addrCfg = new CoreAddressConfiguration(); addrCfg.setName(address); addrCfg.addRoutingType(RoutingType.ANYCAST); CoreQueueConfiguration qConfig = new CoreQueueConfiguration(); qConfig.setName(name); qConfig.setAddress(address); addrCfg.addQueueConfiguration(qConfig); addrConfigs.add(addrCfg); }
return new CoreQueueConfiguration().setAddress(address).setName(name).setFilterString(filterString).setDurable(durable).setMaxConsumers(maxConsumers).setPurgeOnNoConsumers(purgeOnNoConsumers).setUser(user) .setExclusive(exclusive).setLastValue(lastValue).setLastValueKey(lastValueKey).setNonDestructive(nonDestructive).setConsumersBeforeDispatch(consumersBeforeDispatch).setDelayBeforeDispatch(delayBeforeDispatch);
assertEquals("q1", queueConfiguration.getName()); assertFalse(queueConfiguration.isDurable()); assertEquals("color='blue'", queueConfiguration.getFilterString()); assertEquals(ActiveMQDefaultConfiguration.getDefaultPurgeOnNoConsumers(), queueConfiguration.getPurgeOnNoConsumers()); assertEquals("addr1", queueConfiguration.getAddress()); assertEquals(null, queueConfiguration.getMaxConsumers()); assertEquals("q2", queueConfiguration.getName()); assertTrue(queueConfiguration.isDurable()); assertEquals("color='green'", queueConfiguration.getFilterString()); assertEquals(Queue.MAX_CONSUMERS_UNLIMITED, queueConfiguration.getMaxConsumers().intValue()); assertFalse(queueConfiguration.getPurgeOnNoConsumers()); assertEquals("addr1", queueConfiguration.getAddress()); assertEquals("q3", queueConfiguration.getName()); assertTrue(queueConfiguration.isDurable()); assertEquals("color='red'", queueConfiguration.getFilterString()); assertEquals(10, queueConfiguration.getMaxConsumers().intValue()); assertEquals(ActiveMQDefaultConfiguration.getDefaultPurgeOnNoConsumers(), queueConfiguration.getPurgeOnNoConsumers()); assertEquals("addr2", queueConfiguration.getAddress()); assertEquals("q4", queueConfiguration.getName()); assertTrue(queueConfiguration.isDurable()); assertNull(queueConfiguration.getFilterString()); assertEquals(null, queueConfiguration.getMaxConsumers()); assertTrue(queueConfiguration.getPurgeOnNoConsumers()); assertEquals("addr2", queueConfiguration.getAddress());
.addRoutingType( RoutingType.ANYCAST ) .addQueueConfiguration( new CoreQueueConfiguration() .setName( "DLQ" ) .setRoutingType( RoutingType.ANYCAST ) ) ); .addRoutingType( RoutingType.ANYCAST ) .addQueueConfiguration( new CoreQueueConfiguration() .setName( "ExpiryQueue" ) .setRoutingType( RoutingType.ANYCAST ) ) );
@Override @Before public void setUp() throws Exception { super.setUp(); Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("queue." + QUEUE_NAME, QUEUE_NAME); props.put("connectionFactory.cf", "tcp://127.0.0.1:61616?retryInterval=1000&reconnectAttempts=-1"); context = new InitialContext(props); server = createServer(false, createDefaultNettyConfig()); Configuration configuration = new ConfigurationImpl(); configuration.getQueueConfigurations().add(new CoreQueueConfiguration().setName(QUEUE_NAME)); ArrayList<TransportConfiguration> configs = new ArrayList<>(); configs.add(new TransportConfiguration(NETTY_CONNECTOR_FACTORY)); server.start(); listener = new Listener(); exceptionLatch = new CountDownLatch(1); reconnectionLatch = new CountDownLatch(1); allMessagesReceived = new CountDownLatch(1); }
/** {@inheritDoc} */ @Override public synchronized void stop(StopContext context) { try { final ActiveMQServer server = this.activeMQServer.getValue(); server.destroyQueue(new SimpleString(queueConfiguration.getName()), null, false); } catch(Exception e) { MessagingLogger.ROOT_LOGGER.failedToDestroy("queue", queueConfiguration.getName()); } }
protected CoreAddressConfiguration parseAddressConfiguration(final Node node) { CoreAddressConfiguration addressConfiguration = new CoreAddressConfiguration(); String name = getAttributeValue(node, "name"); addressConfiguration.setName(name); List<CoreQueueConfiguration> queueConfigurations = new ArrayList<>(); NodeList children = node.getChildNodes(); for (int j = 0; j < children.getLength(); j++) { Node child = children.item(j); if (child.getNodeName().equals("multicast")) { addressConfiguration.addRoutingType(RoutingType.MULTICAST); queueConfigurations.addAll(parseQueueConfigurations((Element) child, RoutingType.MULTICAST)); } else if (child.getNodeName().equals("anycast")) { addressConfiguration.addRoutingType(RoutingType.ANYCAST); queueConfigurations.addAll(parseQueueConfigurations((Element) child, RoutingType.ANYCAST)); } } for (CoreQueueConfiguration coreQueueConfiguration : queueConfigurations) { coreQueueConfiguration.setAddress(name); } addressConfiguration.setQueueConfigurations(queueConfigurations); return addressConfiguration; }
@Test /** * When running this test from an IDE add this to the test command line so that the AssertionLoggerHandler works properly: * * -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dlogging.configuration=file:<path_to_source>/tests/config/logging.properties */ public void testBlockLogging() throws Exception { ActiveMQServer server = createServer(false, createDefaultInVMConfig()); for (int i = 0; i < 10000; i++) { server.getConfiguration().addQueueConfiguration(new CoreQueueConfiguration().setAddress(UUID.randomUUID().toString()).setName(UUID.randomUUID().toString())); } server.getConfiguration().setGlobalMaxSize(-1); server.getConfiguration().getAddressesSettings().put("#", new AddressSettings().setMaxSizeBytes(10485760 * 10)); server.start(); // Using the code only so the test doesn't fail just because someone edits the log text Assert.assertTrue("Expected to find 222205", AssertionLoggerHandler.findText("AMQ222205")); }
/** {@inheritDoc} */ @Override public synchronized void start(StartContext context) throws StartException { try { final ActiveMQServer server = this.activeMQServer.getValue(); server.deployQueue(new SimpleString(queueConfiguration.getAddress()), new SimpleString(queueConfiguration.getName()), SimpleString.toSimpleString(queueConfiguration.getFilterString()), queueConfiguration.isDurable(), temporary); } catch (Exception e) { throw new StartException(e); } }
/** {@inheritDoc} */ @Override public synchronized void stop(StopContext context) { try { final ActiveMQServer server = this.activeMQServer.getValue(); server.destroyQueue(new SimpleString(queueConfiguration.getName()), null, false); } catch(Exception e) { MessagingLogger.ROOT_LOGGER.failedToDestroy("queue", queueConfiguration.getName()); } }
private static CoreQueueConfiguration createCoreQueueConfiguration(final OperationContext context, String name, ModelNode model) throws OperationFailedException { final String queueAddress = QueueDefinition.ADDRESS.resolveModelAttribute(context, model).asString(); final ModelNode filterNode = FILTER.resolveModelAttribute(context, model); final String filter = filterNode.isDefined() ? filterNode.asString() : null; final boolean durable = DURABLE.resolveModelAttribute(context, model).asBoolean(); return new CoreQueueConfiguration() .setAddress(queueAddress) .setName(name) .setFilterString(filter) .setDurable(durable); }
CoreQueueConfiguration queue1 = new CoreQueueConfiguration().setAddress(testAddress).setName(queueName1); CoreQueueConfiguration queue2 = new CoreQueueConfiguration().setAddress(testAddress).setName(queueName2); CoreQueueConfiguration queue3 = new CoreQueueConfiguration().setAddress(testAddress).setName(queueName3);
assertEquals("queue1", conf.getQueueConfigurations().get(0).getName()); assertEquals("address1", conf.getQueueConfigurations().get(0).getAddress()); assertEquals("color='red'", conf.getQueueConfigurations().get(0).getFilterString()); assertEquals(false, conf.getQueueConfigurations().get(0).isDurable()); assertEquals("queue2", conf.getQueueConfigurations().get(1).getName()); assertEquals("address2", conf.getQueueConfigurations().get(1).getAddress()); assertEquals("color='blue'", conf.getQueueConfigurations().get(1).getFilterString()); assertEquals(false, conf.getQueueConfigurations().get(1).isDurable());
.setName(queueName) .addRoutingType(RoutingType.ANYCAST) .addQueueConfiguration(new CoreQueueConfiguration() .setAddress(queueName) .setName(queueName) .setFilterString(selectorString) .setDurable(durable) .setRoutingType(RoutingType.ANYCAST)));
server0.getConfiguration().setBridgeConfigurations(bridgeConfigs); CoreQueueConfiguration queueConfig0 = new CoreQueueConfiguration().setAddress(testAddress).setName(queueName0); List<CoreQueueConfiguration> queueConfigs0 = new ArrayList<>(); queueConfigs0.add(queueConfig0); server0.getConfiguration().setQueueConfigurations(queueConfigs0); CoreQueueConfiguration queueConfig1 = new CoreQueueConfiguration().setAddress(forwardAddress).setName(queueName1); List<CoreQueueConfiguration> queueConfigs1 = new ArrayList<>(); queueConfigs1.add(queueConfig1);
private CoreAddressConfiguration createAddressConfiguration(String TOPIC) { CoreAddressConfiguration coreAddressConfiguration = new CoreAddressConfiguration(); coreAddressConfiguration.addRoutingType(RoutingType.ANYCAST); coreAddressConfiguration.setName(TOPIC); CoreQueueConfiguration coreQueueConfiguration = new CoreQueueConfiguration(); coreQueueConfiguration.setName(TOPIC); coreQueueConfiguration.setAddress(TOPIC); coreQueueConfiguration.setRoutingType(RoutingType.ANYCAST); coreAddressConfiguration.addQueueConfiguration(coreQueueConfiguration); return coreAddressConfiguration; }