Refine search
@Test public void testMixedOpenWireExample() throws Exception { Connection openConn = null; SimpleString durableQueue = new SimpleString("exampleQueue"); this.server.createQueue(durableQueue, RoutingType.ANYCAST, durableQueue, null, true, false, -1, false, true); ActiveMQConnectionFactory openCF = new ActiveMQConnectionFactory(); Queue queue = new ActiveMQQueue("exampleQueue"); openConn = openCF.createConnection(); openConn.start(); Session openSession = openConn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = openSession.createProducer(queue); TextMessage message = openSession.createTextMessage("This is a text message"); producer.send(message); org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory artemisCF = new org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory(); Connection artemisConn = artemisCF.createConnection(); Session artemisSession = artemisConn.createSession(false, Session.AUTO_ACKNOWLEDGE); artemisConn.start(); MessageConsumer messageConsumer = artemisSession.createConsumer(artemisSession.createQueue("exampleQueue")); TextMessage messageReceived = (TextMessage) messageConsumer.receive(5000); assertEquals("This is a text message", messageReceived.getText()); openConn.close(); artemisConn.close(); }
@Test public void testSendNoAuth() throws Exception { Set<Role> roles = new HashSet<>(); roles.add(new Role("programmers", false, false, false, false, false, false, false, false, false, false)); server.getSecurityRepository().addMatch("denyQ", roles); SimpleString denyQ = new SimpleString("denyQ"); server.createQueue(denyQ, RoutingType.ANYCAST, denyQ, null, true, false); try (Connection connection = factory.createConnection("denyQ", "denyQ")) { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("denyQ"); System.out.println("Queue:" + queue); MessageProducer producer = session.createProducer(queue); producer.setDeliveryMode(DeliveryMode.PERSISTENT); try { producer.send(session.createTextMessage()); fail(); } catch (JMSException e) { //pass } } }
@Test public void testFailDeleteAddressWhenExistsQueues() throws Exception { final String addressName = "address"; final SimpleString addressSimpleString = new SimpleString(addressName); final AddressInfo addressInfo = new AddressInfo(addressSimpleString, EnumSet.of(RoutingType.ANYCAST, RoutingType.MULTICAST)); server.addAddressInfo(addressInfo); server.createQueue(addressSimpleString, RoutingType.MULTICAST, new SimpleString("queue1"), null, true, false); final DeleteAddress deleteAddress = new DeleteAddress(); deleteAddress.setName(addressName); deleteAddress.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error))); checkExecutionFailure(deleteAddress, "Address " + addressName + " has bindings"); }
@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()); } }
@Test public void testSendToQueueOnlyWhenTopicWithSameAddress() throws Exception { SimpleString addr = SimpleString.toSimpleString("testAddr"); EnumSet<RoutingType> supportedRoutingTypes = EnumSet.of(RoutingType.ANYCAST, RoutingType.MULTICAST); servers.get(0).getActiveMQServer().addAddressInfo(new AddressInfo(addr, supportedRoutingTypes)); servers.get(0).getActiveMQServer().createQueue(addr, RoutingType.ANYCAST, addr, null, false, false); Connection pconn = createConnection(); pconn.start(); Session ps = pconn.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = ps.createQueue(addr.toString()); Topic topic = ps.createTopic(addr.toString()); MessageConsumer queueConsumer = ps.createConsumer(queue); MessageConsumer topicConsumer = ps.createConsumer(topic); MessageProducer queueProducer = ps.createProducer(queue); queueProducer.send(ps.createMessage()); assertNotNull(queueConsumer.receive(1000)); assertNull(topicConsumer.receive(1000)); MessageProducer topicProducer = ps.createProducer(topic); topicProducer.send(ps.createMessage()); assertNull(queueConsumer.receive(1000)); assertNotNull(topicConsumer.receive(1000)); }
@Test public void testLimitOnMaxConsumers() throws Exception { 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, 0, purgeOnNoConsumers, true); Exception expectedException = null; String expectedMessage = "Maximum Consumer Limit Reached on Queue"; try { ClientSession session = sessionFactory.createSession(); session.start(); session.createConsumer(q1.getName()); } catch (ActiveMQQueueMaxConsumerLimitReached e) { expectedException = e; } assertNotNull(expectedException); assertTrue(expectedException.getMessage().contains(expectedMessage)); assertTrue(expectedException.getMessage().contains(address)); assertTrue(expectedException.getMessage().contains(queueName)); }
@Test public void testFailUpdateAddressRoutingTypesWhenExistsQueues() throws Exception { final String addressName = "address"; final SimpleString addressSimpleString = new SimpleString(addressName); final AddressInfo addressInfo = new AddressInfo(addressSimpleString, EnumSet.of(RoutingType.ANYCAST, RoutingType.MULTICAST)); server.addAddressInfo(addressInfo); server.createQueue(addressSimpleString, RoutingType.MULTICAST, new SimpleString("queue1"), null, true, false); final UpdateAddress updateAddress = new UpdateAddress(); updateAddress.setName(addressName); updateAddress.setAnycast(true); updateAddress.setMulticast(false); updateAddress.execute(new ActionContext(System.in, new PrintStream(output), new PrintStream(error))); final String expectedErrorMessage = MessageFormat.format("Can''t remove routing type {0}, queues exists for address: {1}. Please delete queues before removing this routing type.", RoutingType.MULTICAST, addressName); checkExecutionFailure(updateAddress, expectedErrorMessage); }
@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()); }
@Test public void persistAddressConfigTest() throws Exception { server.createQueue(SimpleString.toSimpleString("myAddress"), RoutingType.MULTICAST, SimpleString.toSimpleString("myQueue"), null, true, false); server.stop(); server.start(); AddressInfo addressInfo = server.getAddressInfo(SimpleString.toSimpleString("myAddress")); assertNotNull(addressInfo); Set<RoutingType> routingTypeSet = new HashSet<>(); routingTypeSet.add(RoutingType.MULTICAST); assertEquals(routingTypeSet, addressInfo.getRoutingTypes()); } }
@Test public void testSyncPageTX() throws Exception { Configuration config = createDefaultInVMConfig(); server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); server.start(); server.createQueue(PagingTest.ADDRESS, RoutingType.ANYCAST, PagingTest.ADDRESS, null, true, false); final CountDownLatch pageUp = new CountDownLatch(0); final CountDownLatch pageDone = new CountDownLatch(1); OperationContext ctx = new DummyOperationContext(pageUp, pageDone); OperationContextImpl.setContext(ctx); PagingManager paging = server.getPagingManager(); PagingStore store = paging.getPageStore(ADDRESS); store.sync(); assertTrue(pageUp.await(10, TimeUnit.SECONDS)); assertTrue(pageDone.await(10, TimeUnit.SECONDS)); }
@Test public void testAutoDeleteAutoCreatedQueue() throws Exception { // auto-delete-queues defaults to true server.createQueue(addressA, RoutingType.ANYCAST, queueA, null, null, true, false, false, false, true, 1, false, true); assertNotNull(server.locateQueue(queueA)); cf.createSession().createConsumer(queueA).close(); assertNull(server.locateQueue(queueA)); }
@Test public void testQueueQueryOnStaticQueueWithFQQN() throws Exception { SimpleString addressName = SimpleString.toSimpleString(UUID.randomUUID().toString()); SimpleString queueName = SimpleString.toSimpleString(UUID.randomUUID().toString()); SimpleString fqqn = addressName.concat("::").concat(queueName); server.createQueue(fqqn, RoutingType.MULTICAST, fqqn, null, true, false); QueueQueryResult queueQueryResult = server.queueQuery(fqqn); assertEquals(queueName, queueQueryResult.getName()); assertEquals(addressName, queueQueryResult.getAddress()); queueQueryResult = server.queueQuery(queueName); assertEquals(queueName, queueQueryResult.getName()); assertEquals(addressName, queueQueryResult.getAddress()); }
@Test public void testAutoDeleteAutoCreatedAddress() throws Exception { // auto-delete-addresses defaults to true server.createQueue(addressA, RoutingType.ANYCAST, queueA, null, null, true, false, false, false, true, 1, false, true); assertNotNull(server.getAddressInfo(addressA)); cf.createSession().createConsumer(queueA).close(); assertNull(server.getAddressInfo(addressA)); }
@Test public void testDefaultConsumerWindowSize() throws Exception { ActiveMQServer messagingService = createServer(false, isNetty()); 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); consumer.start(); assertEquals(ActiveMQClient.DEFAULT_CONSUMER_WINDOW_SIZE / 2, consumer.getClientWindowSize()); }
@Test(timeout = 60000) public void testConsumeWhenNoAddressHasBothRoutingTypesButDefaultQueueIsAnyCast() throws Exception { AddressInfo addressInfo = new AddressInfo(address); addressInfo.getRoutingTypes().add(RoutingType.MULTICAST); addressInfo.getRoutingTypes().add(RoutingType.ANYCAST); server.addAddressInfo(addressInfo); server.createQueue(address, RoutingType.MULTICAST, address, null, true, false); AmqpClient client = createAmqpClient(); AmqpConnection connection = addConnection(client.connect()); AmqpSession session = connection.createSession(); try { session.createReceiver(address.toString()); fail("expected exception"); } catch (Exception e) { //ignore } connection.close(); }
@Test(timeout = 60000) public void testConsumeWhenNoAddressHasBothRoutingTypesButDefaultQueueIsMultiCast() throws Exception { AddressInfo addressInfo = new AddressInfo(address); addressInfo.getRoutingTypes().add(RoutingType.ANYCAST); addressInfo.getRoutingTypes().add(RoutingType.MULTICAST); server.addAddressInfo(addressInfo); server.createQueue(address, RoutingType.MULTICAST, address, null, true, false); AmqpClient client = createAmqpClient(); AmqpConnection connection = addConnection(client.connect()); AmqpSession session = connection.createSession(); try { session.createReceiver(address.toString()); fail("expected exception"); } catch (Exception e) { //ignore } connection.close(); }
@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()); }
@Test(timeout = 60 * 1000) public void testClientDisconnectedOnMaxConsumerLimitReached() throws Exception { Exception peerDisconnectedException = null; try { String clientId = "test.client"; SimpleString coreAddress = new SimpleString("foo.bar"); Topic[] mqttSubscription = new Topic[]{new Topic("foo/bar", QoS.AT_LEAST_ONCE)}; getServer().createQueue(coreAddress, RoutingType.MULTICAST, new SimpleString(clientId + "." + coreAddress), null, false, true, 0, false, true); MQTT mqtt = createMQTTConnection(); mqtt.setClientId(clientId); mqtt.setKeepAlive((short) 2); final BlockingConnection connection = mqtt.blockingConnection(); connection.connect(); connection.subscribe(mqttSubscription); } catch (EOFException e) { peerDisconnectedException = e; } assertNotNull(peerDisconnectedException); assertTrue(peerDisconnectedException.getMessage().contains("Peer disconnected")); }
@Test public void testNegativeAutoDeleteAutoCreatedAddress() throws Exception { server.getAddressSettingsRepository().addMatch(addressA.toString(), new AddressSettings().setAutoDeleteAddresses(false)); server.createQueue(addressA, RoutingType.ANYCAST, queueA, null, null, true, false, false, false, true, 1, false, true); assertNotNull(server.getAddressInfo(addressA)); cf.createSession().createConsumer(queueA).close(); assertNotNull(server.getAddressInfo(addressA)); } }
@Test public void testNegativeAutoDeleteAutoCreatedQueue() throws Exception { server.getAddressSettingsRepository().addMatch(addressA.toString(), new AddressSettings().setAutoDeleteQueues(false)); server.createQueue(addressA, RoutingType.ANYCAST, queueA, null, null, true, false, false, false, true, 1, false, true); assertNotNull(server.locateQueue(queueA)); cf.createSession().createConsumer(queueA).close(); assertNotNull(server.locateQueue(queueA)); } }