@Override protected void addConfiguration(ActiveMQServer server) { server.getAddressSettingsRepository().addMatch(INITIAL_QUEUE_NAME, new AddressSettings().setExpiryAddress(FINAL_QUEUE_SS)); }
private ActiveMQServer createServerForMQTT() throws Exception { Configuration defaultConfig = createDefaultConfig(true).setIncomingInterceptorClassNames(singletonList(MQTTIncomingInterceptor.class.getName())).setOutgoingInterceptorClassNames(singletonList(MQTTOutoingInterceptor.class.getName())); AddressSettings addressSettings = new AddressSettings(); addressSettings.setDeadLetterAddress(SimpleString.toSimpleString("DLA")); addressSettings.setExpiryAddress(SimpleString.toSimpleString("EXPIRY")); defaultConfig.getAddressesSettings().put("#", addressSettings); return createServer(true, defaultConfig); }
/** * Create a default EmbeddedActiveMQResource */ public EmbeddedActiveMQResource() { configuration = new ConfigurationImpl().setName(SERVER_NAME).setPersistenceEnabled(false).setSecurityEnabled(false).addAcceptorConfiguration(new TransportConfiguration(InVMAcceptorFactory.class.getName())).addAddressesSetting("#", new AddressSettings().setDeadLetterAddress(SimpleString.toSimpleString("dla")).setExpiryAddress(SimpleString.toSimpleString("expiry"))); init(); }
/** * Create a default EmbeddedActiveMQResource */ public EmbeddedActiveMQResource() { configuration = new ConfigurationImpl().setName(SERVER_NAME).setPersistenceEnabled(false).setSecurityEnabled(false).addAcceptorConfiguration(new TransportConfiguration(InVMAcceptorFactory.class.getName())).addAddressesSetting("#", new AddressSettings().setDeadLetterAddress(SimpleString.toSimpleString("dla")).setExpiryAddress(SimpleString.toSimpleString("expiry"))); init(); }
public static ActiveMQServer startServer() throws Exception { if (server == null) { Configuration config = new ConfigurationImpl().addAcceptorConfiguration("netty", "tcp://localhost:61616").setSecurityEnabled(false).addConnectorConfiguration("netty", "tcp://localhost:61616"); File dataPlace = new File("./target/dataJoram"); FileUtil.deleteDirectory(dataPlace); config.setJournalDirectory(new File(dataPlace, "./journal").getAbsolutePath()). setPagingDirectory(new File(dataPlace, "./paging").getAbsolutePath()). setLargeMessagesDirectory(new File(dataPlace, "./largemessages").getAbsolutePath()). setBindingsDirectory(new File(dataPlace, "./bindings").getAbsolutePath()).setPersistenceEnabled(true); // disable server persistence since JORAM tests do not restart server server = ActiveMQServers.newActiveMQServer(config, useFiles); // set DLA and expiry to avoid spamming the log with warnings server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setDeadLetterAddress(SimpleString.toSimpleString("DLA")).setExpiryAddress(SimpleString.toSimpleString("Expiry"))); server.start(); } return server; }
protected void configureAddressPolicy(ActiveMQServer server) { // Address configuration AddressSettings addressSettings = new AddressSettings(); addressSettings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE); addressSettings.setAutoCreateQueues(isAutoCreateQueues()); addressSettings.setAutoCreateAddresses(isAutoCreateAddresses()); addressSettings.setDeadLetterAddress(SimpleString.toSimpleString(getDeadLetterAddress())); addressSettings.setExpiryAddress(SimpleString.toSimpleString(getDeadLetterAddress())); server.getConfiguration().getAddressesSettings().put("#", addressSettings); Set<TransportConfiguration> acceptors = server.getConfiguration().getAcceptorConfigurations(); for (TransportConfiguration tc : acceptors) { if (tc.getName().equals("netty-acceptor")) { tc.getExtraParams().put("anycastPrefix", "anycast://"); tc.getExtraParams().put("multicastPrefix", "multicast://"); } } }
@Override @Before public void setUp() throws Exception { super.setUp(); server = createServer(false, createDefaultInVMConfig().addAddressesSetting("#", new AddressSettings().setDeadLetterAddress(new SimpleString("dlq")).setExpiryAddress(new SimpleString("dlq")))); server.getConfiguration().setPersistenceEnabled(true); }
private void configureBeforeStart(Configuration... serverConfigs) { for (Configuration config : serverConfigs) { config.setPersistenceEnabled(true); config.setMessageCounterEnabled(true); config.setJournalFileSize(20971520); config.setJournalMinFiles(20); config.setJournalCompactPercentage(50); Map<String, AddressSettings> addressSettingsMap0 = config.getAddressesSettings(); AddressSettings addrSettings = addressSettingsMap0.get("#"); if (addrSettings == null) { addrSettings = new AddressSettings(); addressSettingsMap0.put("#", addrSettings); } addrSettings.setDeadLetterAddress(new SimpleString("jms.queue.DLQ")); addrSettings.setExpiryAddress(new SimpleString("jms.queue.ExpiryQueue")); addrSettings.setRedeliveryDelay(30); addrSettings.setMaxDeliveryAttempts(5); addrSettings.setMaxSizeBytes(1048576); addrSettings.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE); addrSettings.setPageSizeBytes(524288); addrSettings.setMessageCounterHistoryDayLimit(10); addrSettings.setRedistributionDelay(1000); } }
@Test public void testExpireFromMultipleQueues() throws Exception { ClientProducer producer = clientSession.createProducer(qName); clientSession.createQueue(qName2, RoutingType.MULTICAST, qName2, null, false); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(expiryAddress); server.getAddressSettingsRepository().addMatch(qName2.toString(), addressSettings); ClientProducer producer2 = clientSession.createProducer(qName2); int numMessages = 100; long expiration = System.currentTimeMillis(); for (int i = 0; i < numMessages; i++) { ClientMessage m = createTextMessage(clientSession, "m" + i); m.setExpiration(expiration); producer.send(m); m = createTextMessage(clientSession, "m" + i); m.setExpiration(expiration); producer2.send(m); } Thread.sleep(1600); Assert.assertEquals(0, ((Queue) server.getPostOffice().getBinding(qName).getBindable()).getMessageCount()); Assert.assertEquals(0, ((Queue) server.getPostOffice().getBinding(qName).getBindable()).getDeliveringCount()); }
@Override @Before public void setUp() throws Exception { super.setUp(); server = createServer(true); AddressSettings setting = new AddressSettings().setExpiryAddress(SimpleString.toSimpleString("exp")).setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE).setPageSizeBytes(100 * 1024).setMaxSizeBytes(200 * 1024); server.getConfiguration().setJournalSyncNonTransactional(false); server.getConfiguration().setMessageExpiryScanPeriod(-1); server.getConfiguration().setJournalSyncTransactional(false); server.getAddressSettingsRepository().addMatch("#", setting); server.start(); }
private void startServers(MessageLoadBalancingType loadBalancingType) throws Exception { setupServers(); setRedistributionDelay(0); setupCluster(loadBalancingType); AddressSettings as = new AddressSettings().setRedistributionDelay(0).setExpiryAddress(SimpleString.toSimpleString("queues.expiry")); getServer(0).getAddressSettingsRepository().addMatch("queues.*", as); getServer(1).getAddressSettingsRepository().addMatch("queues.*", as); startServers(0); startServers(1); createQueue(SimpleString.toSimpleString("queues.expiry")); createQueue(queueName); }
protected void deployAdministeredObjects() throws Exception { // set DLA and expiry to avoid spamming the log with warnings getJmsServer().getAddressSettingsRepository().addMatch("#", new AddressSettings().setDeadLetterAddress(SimpleString.toSimpleString("DLA")).setExpiryAddress(SimpleString.toSimpleString("Expiry"))); createTopic("Topic1"); createTopic("Topic2"); createTopic("Topic3"); createQueue("Queue1"); createQueue("Queue2"); createQueue("Queue3"); createQueue("Queue4"); deployConnectionFactory(0, JMSFactoryType.CF, "ConnectionFactory", "/ConnectionFactory"); deployConnectionFactory(0, JMSFactoryType.TOPIC_CF, "CF_TOPIC", "/CF_TOPIC"); deployConnectionFactory(0, JMSFactoryType.XA_CF, "CF_XA_TRUE", "/CF_XA_TRUE"); }
@Test public void testSetExpiryAddress() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); String expiryAddress = RandomUtil.randomString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); QueueControl queueControl = createManagementControl(address, queue); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(new SimpleString(expiryAddress)); server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); Assert.assertEquals(expiryAddress, queueControl.getExpiryAddress()); Queue serverqueue = server.locateQueue(queue); assertEquals(expiryAddress, serverqueue.getExpiryAddress().toString()); session.deleteQueue(queue); }
@Test public void testMessagesExpiredNoBindings() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); SimpleString expiryAddress = RandomUtil.randomSimpleString(); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(expiryAddress); server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); session.createQueue(address, RoutingType.MULTICAST, queue, null, true); Assert.assertEquals(0, server.locateQueue(queue).getMessagesExpired()); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(true); message.setExpiration(System.currentTimeMillis() + EXPIRATION); producer.send(message); Assert.assertTrue(Wait.waitFor(() -> server.locateQueue(queue).getMessagesExpired() == 1, 2000, 100)); assertEquals(0, server.locateQueue(queue).getMessageCount()); assertEquals(0, server.locateQueue(queue).getDeliveringCount()); session.deleteQueue(queue); }
@Test public void testExpireWithDefaultAddressSettings() throws Exception { SimpleString ea = new SimpleString("EA"); SimpleString qName = new SimpleString("q1"); SimpleString eq = new SimpleString("EA1"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(ea); server.getAddressSettingsRepository().setDefault(addressSettings); clientSession.createQueue(ea, eq, null, false); clientSession.createQueue(qName, qName, null, false); ClientProducer producer = clientSession.createProducer(qName); ClientMessage clientMessage = createTextMessage(clientSession, "heyho!"); clientMessage.setExpiration(System.currentTimeMillis()); producer.send(clientMessage); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(qName); ClientMessage m = clientConsumer.receiveImmediate(); Assert.assertNull(m); clientConsumer.close(); clientConsumer = clientSession.createConsumer(eq); m = clientConsumer.receive(500); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); m.acknowledge(); }
@Test public void testExpireWithWildcardAddressSettings() throws Exception { SimpleString ea = new SimpleString("EA"); SimpleString qName = new SimpleString("q1"); SimpleString eq = new SimpleString("EA1"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(ea); server.getAddressSettingsRepository().addMatch("*", addressSettings); clientSession.createQueue(ea, eq, null, false); clientSession.createQueue(qName, qName, null, false); ClientProducer producer = clientSession.createProducer(qName); ClientMessage clientMessage = createTextMessage(clientSession, "heyho!"); clientMessage.setExpiration(System.currentTimeMillis()); producer.send(clientMessage); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(qName); ClientMessage m = clientConsumer.receiveImmediate(); Assert.assertNull(m); clientConsumer.close(); clientConsumer = clientSession.createConsumer(eq); m = clientConsumer.receive(500); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); m.acknowledge(); }
SimpleString exp = new SimpleString("testExpiryQueue"); addressSettingsToMerge.setDeadLetterAddress(DLQ); addressSettingsToMerge.setExpiryAddress(exp); addressSettingsToMerge.setMaxDeliveryAttempts(1000); addressSettingsToMerge.setMaxSizeBytes(1001); addressSettingsToMerge2.setExpiryAddress(exp2); addressSettingsToMerge2.setMaxSizeBytes(2001); addressSettingsToMerge2.setRedeliveryDelay(2003);
@Override @Before public void setUp() throws Exception { super.setUp(); ConfigurationImpl configuration = (ConfigurationImpl) createDefaultInVMConfig().setMessageExpiryScanPeriod(1000); server = addServer(ActiveMQServers.newActiveMQServer(configuration, false)); // start the server server.start(); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSession.createQueue(qName, RoutingType.MULTICAST, qName, null, false); expiryAddress = new SimpleString("EA"); expiryQueue = new SimpleString("expiryQ"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(expiryAddress); server.getAddressSettingsRepository().addMatch(qName.toString(), addressSettings); server.getAddressSettingsRepository().addMatch(qName2.toString(), addressSettings); clientSession.createQueue(expiryAddress, RoutingType.MULTICAST, expiryQueue, null, false); }
@Test public void testBasicSend() throws Exception { SimpleString ea = new SimpleString("EA"); SimpleString adSend = new SimpleString("a1"); SimpleString qName = new SimpleString("q1"); SimpleString eq = new SimpleString("EA1"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(ea); server.getAddressSettingsRepository().addMatch("#", addressSettings); clientSession.createQueue(ea, eq, null, false); clientSession.createQueue(adSend, qName, null, false); ClientProducer producer = clientSession.createProducer(adSend); ClientMessage clientMessage = createTextMessage(clientSession, "heyho!"); clientMessage.setExpiration(System.currentTimeMillis()); producer.send(clientMessage); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(qName); ClientMessage m = clientConsumer.receiveImmediate(); Assert.assertNull(m); m = clientConsumer.receiveImmediate(); Assert.assertNull(m); clientConsumer.close(); clientConsumer = clientSession.createConsumer(eq); m = clientConsumer.receive(500); Assert.assertNotNull(m); Assert.assertEquals(qName.toString(), m.getStringProperty(Message.HDR_ORIGINAL_QUEUE)); Assert.assertEquals(adSend.toString(), m.getStringProperty(Message.HDR_ORIGINAL_ADDRESS)); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); m.acknowledge(); }
@Test public void testSingleMerge() { AddressSettings addressSettings = new AddressSettings(); AddressSettings addressSettingsToMerge = new AddressSettings(); SimpleString DLQ = new SimpleString("testDLQ"); SimpleString exp = new SimpleString("testExpiryQueue"); addressSettingsToMerge.setDeadLetterAddress(DLQ); addressSettingsToMerge.setExpiryAddress(exp); addressSettingsToMerge.setMaxDeliveryAttempts(1000); addressSettingsToMerge.setAddressFullMessagePolicy(AddressFullMessagePolicy.DROP); addressSettingsToMerge.setMaxSizeBytes(1001); addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002); addressSettingsToMerge.setRedeliveryDelay(1003); addressSettingsToMerge.setPageSizeBytes(1004); addressSettingsToMerge.setMaxSizeBytesRejectThreshold(10 * 1024); addressSettings.merge(addressSettingsToMerge); Assert.assertEquals(addressSettings.getDeadLetterAddress(), DLQ); Assert.assertEquals(addressSettings.getExpiryAddress(), exp); Assert.assertEquals(addressSettings.getMaxDeliveryAttempts(), 1000); Assert.assertEquals(addressSettings.getMaxSizeBytes(), 1001); Assert.assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), 1002); Assert.assertEquals(addressSettings.getRedeliveryDelay(), 1003); Assert.assertEquals(addressSettings.getPageSizeBytes(), 1004); Assert.assertEquals(AddressFullMessagePolicy.DROP, addressSettings.getAddressFullMessagePolicy()); Assert.assertEquals(addressSettings.getMaxSizeBytesRejectThreshold(), 10 * 1024); }