@Test public void testAddressSettingUSed() throws Exception { server.getAddressSettingsRepository().addMatch(address.toString(), new AddressSettings().setDefaultLastValueQueue(true)); ClientSession session = createSessionFactory(locator).createSession(false, true, true); SimpleString filterString = new SimpleString("x=y"); session.createQueue(address, queueName, filterString, false); Binding binding = server.getPostOffice().getBinding(queueName); Assert.assertTrue(binding.getBindable() instanceof LastValueQueue); session.close(); }
@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(); }
@Test public void testPurgeOnNoConsumersFalse() throws Exception { SimpleString address = new SimpleString("test.address"); SimpleString queueName = SimpleString.toSimpleString(UUID.randomUUID().toString()); server.createQueue(address, RoutingType.ANYCAST, queueName, null, null, true, false, false, false, false, 1, false, true); assertNotNull(server.locateQueue(queueName)); ClientSession session = sessionFactory.createSession(); ClientProducer producer = session.createProducer(address); producer.send(session.createMessage(true)); session.createConsumer(queueName).close(); assertNotNull(server.locateQueue(queueName)); assertEquals(1, server.locateQueue(queueName).getMessageCount()); }
private void createManagementQueue() throws Exception { Queue q = session.getServer().locateQueue(managementAddress); if (q == null) { session.getServer().createQueue(managementAddress, RoutingType.ANYCAST, managementAddress, null, MQTTUtil.DURABLE_MESSAGES, false); } }
public boolean destinationExists(String destination) { if (server.getManagementService().getManagementAddress().toString().equals(destination)) { return true; } return server.getPostOffice().getAddressInfo(SimpleString.toSimpleString(destination)) != null; }
@Test public void testFlowControlMessageNotRouted() throws Exception { final SimpleString address = new SimpleString("testaddress"); server = createServer(false, isNetty()); AddressSettings addressSettings = new AddressSettings().setMaxSizeBytes(1024).setAddressFullMessagePolicy(AddressFullMessagePolicy.BLOCK); HierarchicalRepository<AddressSettings> repos = server.getAddressSettingsRepository(); repos.addMatch(address.toString(), addressSettings); server.start(); waitForServerToStart(server); locator.setProducerWindowSize(1024).setConsumerWindowSize(1024).setAckBatchSize(1024); sf = createSessionFactory(locator); session = sf.createSession(false, true, true, true); ClientProducer producer = session.createProducer(address); byte[] bytes = new byte[100]; final int numMessages = 1000; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); producer.send(message); } }
@Test public void testOrder1() throws Throwable { boolean persistentMessages = true; Configuration config = createDefaultInVMConfig().setJournalSyncNonTransactional(false); ActiveMQServer server = createServer(true, config, PAGE_SIZE, PAGE_MAX, new HashMap<String, AddressSettings>()); server.start(); final int messageSize = 1024; final int numberOfMessages = 500; ServerLocator locator = createInVMNonHALocator().setClientFailureCheckPeriod(1000).setConnectionTTL(2000).setReconnectAttempts(0).setBlockOnNonDurableSend(false).setBlockOnDurableSend(false).setBlockOnAcknowledge(false).setConsumerWindowSize(1024 * 1024); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, false, false); server.addAddressInfo(new AddressInfo(ADDRESS, RoutingType.ANYCAST)); server.createQueue(ADDRESS, RoutingType.ANYCAST, ADDRESS, null, true, false); ClientProducer producer = session.createProducer(PagingTest.ADDRESS); byte[] body = new byte[messageSize]; ByteBuffer bb = ByteBuffer.wrap(body); for (int j = 1; j <= messageSize; j++) { bb.put(getSamplebyte(j)); } for (int i = 0; i < numberOfMessages; i++) { ClientMessage message = session.createMessage(persistentMessages); ActiveMQBuffer bodyLocal = message.getBodyBuffer(); bodyLocal.writeBytes(body); message.putIntProperty(new SimpleString("id"), i); producer.send(message); } session.commit(); session.close(); }
@Test public void testRollbackOnSend() throws Exception { clearDataRecreateServerDirs(); Configuration config = createDefaultInVMConfig(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); server.start(); final int numberOfIntegers = 256; final int numberOfMessages = 10; locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true); sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, false, true, false, 0); session.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true); ClientProducer producer = session.createProducer(PagingTest.ADDRESS); ClientMessage message = null; for (int i = 0; i < numberOfMessages; i++) { message = session.createMessage(true); ActiveMQBuffer bodyLocal = message.getBodyBuffer(); for (int j = 1; j <= numberOfIntegers; j++) { bodyLocal.writeInt(j); } message.putIntProperty(new SimpleString("id"), i); producer.send(message); } session.rollback(); ClientConsumer consumer = session.createConsumer(PagingTest.ADDRESS); session.start(); Assert.assertNull(consumer.receiveImmediate()); session.close(); }
@Test public void testDeleteQueue() throws Exception { ClientSession session = createSessionFactory(locator).createSession(false, true, true); session.createQueue(address, queueName, false); Binding binding = server.getPostOffice().getBinding(queueName); Assert.assertNotNull(binding); session.deleteQueue(queueName); binding = server.getPostOffice().getBinding(queueName); Assert.assertNull(binding); session.close(); }
@Test public void testSendToDLAWhenNoRoute() throws Exception { SimpleString dla = new SimpleString("DLA"); SimpleString address = new SimpleString("empty_address"); AddressSettings addressSettings = new AddressSettings().setDeadLetterAddress(dla).setSendToDLAOnNoRoute(true); server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); SimpleString dlq = new SimpleString("DLQ1"); clientSession.createQueue(dla, dlq, null, false); ClientProducer producer = clientSession.createProducer(address); producer.send(createTextMessage(clientSession, "heyho!")); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(dlq); ClientMessage m = clientConsumer.receive(500); m.acknowledge(); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); }
@Test public void testBasicPluginAuthorization() throws Exception { server.start(); ClientSessionFactory cf = locator.createSessionFactory(); String name = "queue1"; try { ClientSession session = cf.createSession("first", "secret", false, true, true, false, 0); session.createQueue(SimpleString.toSimpleString(name), SimpleString.toSimpleString(name)); ClientProducer producer = session.createProducer(); producer.send(name, session.createMessage(false)); session.close(); } catch (ActiveMQException e) { e.printStackTrace(); Assert.fail("should not throw exception"); } cf.close(); }
@Test public void testMessageCounter() throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, false, false, false, 0); session.createQueue(QUEUE, QUEUE, null, false); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(session, "m" + i); producer.send(message); } session.commit(); session.start(); Assert.assertEquals(100, getMessageCount(server.getPostOffice(), QUEUE.toString())); ClientConsumer consumer = session.createConsumer(QUEUE, null, false); for (int i = 0; i < numMessages; i++) { ClientMessage message = consumer.receive(1000); Assert.assertNotNull(message); message.acknowledge(); session.commit(); Assert.assertEquals("m" + i, message.getBodyBuffer().readString()); } session.close(); Assert.assertEquals(0, getMessageCount(server.getPostOffice(), QUEUE.toString())); }
@Override @Before public void setUp() throws Exception { super.setUp(); configuration = createDefaultInVMConfig(); server = createServer(true, configuration); server.start(); qs = new AddressSettings().setDefaultLastValueQueue(true); server.getAddressSettingsRepository().addMatch(address.toString(), qs); // then we create a client as normal locator = createInVMNonHALocator().setBlockOnAcknowledge(true).setAckBatchSize(0); ClientSessionFactory sessionFactory = createSessionFactory(locator); clientSession = sessionFactory.createSession(false, true, true); clientSessionXa = sessionFactory.createSession(true, false, false); clientSession.createQueue(address, qName1, null, true); }
@Test public void testQueueQueryNoQ() throws Exception { server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateQueues(false)); cf = createSessionFactory(locator); ClientSession clientSession = cf.createSession(false, true, true); QueueQuery resp = clientSession.queueQuery(new SimpleString(queueName)); Assert.assertFalse(resp.isExists()); Assert.assertFalse(resp.isAutoCreateQueues()); Assert.assertEquals(queueName, resp.getAddress().toString()); clientSession.close(); }
@Test public void testConsumerWindowSizeAddressSettings() throws Exception { ActiveMQServer messagingService = createServer(false, isNetty()); final int defaultConsumerWindowSize = 1024 * 5; final AddressSettings settings = new AddressSettings(); settings.setDefaultConsumerWindowSize(defaultConsumerWindowSize); messagingService.getConfiguration() .getAddressesSettings().put(queueA.toString(), settings); messagingService.start(); messagingService.createQueue(queueA, RoutingType.ANYCAST, queueA, null, true, false); ClientSessionFactory cf = createSessionFactory(locator); ClientSession session = cf.createSession(false, true, true); ClientConsumerImpl consumer = (ClientConsumerImpl) session.createConsumer(queueA); session.start(); assertEquals(defaultConsumerWindowSize / 2, consumer.getClientWindowSize()); }
@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 testMulticastRoutingBackwardsCompat() throws Exception { SimpleString sendAddress = new SimpleString("test.address"); List<String> testAddresses = Arrays.asList("test.address", "test.#", "test.*"); for (String consumeAddress : testAddresses) { // For each address, create 2 Queues with the same address, assert both queues receive message Queue q1 = server.createQueue(new SimpleString(consumeAddress), RoutingType.MULTICAST, new SimpleString(consumeAddress + ".1"), null, true, false); Queue q2 = server.createQueue(new SimpleString(consumeAddress), RoutingType.MULTICAST, new SimpleString(consumeAddress + ".2"), null, true, false); ClientSession session = sessionFactory.createSession(); session.start(); ClientConsumer consumer1 = session.createConsumer(q1.getName()); ClientConsumer consumer2 = session.createConsumer(q2.getName()); ClientProducer producer = session.createProducer(sendAddress); ClientMessage m = session.createMessage(ClientMessage.TEXT_TYPE, true); m.getBodyBuffer().writeString("TestMessage"); producer.send(m); assertNotNull(consumer1.receive(2000)); assertNotNull(consumer2.receive(2000)); q1.deleteQueue(); q2.deleteQueue(); } }
@Test public void testUnlimitedMaxConsumers() throws Exception { int noConsumers = 50; SimpleString address = new SimpleString("test.address"); SimpleString queueName = SimpleString.toSimpleString(UUID.randomUUID().toString()); // For each address, create 2 Queues with the same address, assert both queues receive message boolean purgeOnNoConsumers = false; Queue q1 = server.createQueue(address, RoutingType.MULTICAST, queueName, null, true, false, Queue.MAX_CONSUMERS_UNLIMITED, purgeOnNoConsumers, true); ClientSession session = sessionFactory.createSession(); session.start(); for (int i = 0; i < noConsumers; i++) { session.createConsumer(q1.getName()); } }
private void testConsumerBrowserMessagesArentAcked(final boolean preACK) throws Exception { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(null, null, false, true, true, preACK, 0); session.createQueue(QUEUE, QUEUE, null, false); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(session, "m" + i); producer.send(message); } ClientConsumer consumer = session.createConsumer(QUEUE, null, true); for (int i = 0; i < numMessages; i++) { ClientMessage message2 = consumer.receive(1000); Assert.assertEquals("m" + i, message2.getBodyBuffer().readString()); } // assert that all the messages are there and none have been acked Assert.assertEquals(0, ((Queue) server.getPostOffice().getBinding(QUEUE).getBindable()).getDeliveringCount()); Assert.assertEquals(100, getMessageCount(((Queue) server.getPostOffice().getBinding(QUEUE).getBindable()))); session.close(); }