private void dropAllSubscriptions(AddressControl addressControl, ManagementService managementService) throws Exception { ActiveMQServerControl serverControl = (ActiveMQServerControl) managementService.getResource(ResourceNames.BROKER); String[] queues = addressControl.getQueueNames(); for (String queue : queues) { // Drop all subscription shouldn't delete the dummy queue used to identify if the topic exists on the core queues. // we will just ignore this queue if (!queue.equals(addressControl.getAddress())) { serverControl.destroyQueue(queue); } } }
private void dropAllSubscriptions(AddressControl addressControl, ManagementService managementService) throws Exception { ActiveMQServerControl serverControl = (ActiveMQServerControl) managementService.getResource(ResourceNames.BROKER); String[] queues = addressControl.getQueueNames(); for (String queue : queues) { // Drop all subscription shouldn't delete the dummy queue used to identify if the topic exists on the core queues. // we will just ignore this queue if (!queue.equals(addressControl.getAddress())) { serverControl.destroyQueue(queue); } } }
public static List<QueueControl> getQueues(final DurabilityType durability, AddressControl addressControl, ManagementService managementService) { try { List<QueueControl> matchingQueues = new ArrayList<>(); String[] queues = addressControl.getQueueNames(); for (String queue : queues) { QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queue); // Ignore the "special" subscription if (coreQueueControl != null && !coreQueueControl.getName().equals(addressControl.getAddress())) { if (durability == DurabilityType.ALL || durability == DurabilityType.DURABLE && coreQueueControl.isDurable() || durability == DurabilityType.NON_DURABLE && !coreQueueControl.isDurable()) { matchingQueues.add(coreQueueControl); } } } return matchingQueues; } catch (Exception e) { return Collections.emptyList(); } }
private int removeMessages(final String filterStr, AddressControl addressControl, ManagementService managementService) throws Exception { String filter = createFilterFromJMSSelector(filterStr); int count = 0; String[] queues = addressControl.getQueueNames(); for (String queue : queues) { QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queue); if (coreQueueControl != null) { count += coreQueueControl.removeMessages(filter); } } return count; }
public static List<QueueControl> getQueues(final DurabilityType durability, AddressControl addressControl, ManagementService managementService) { try { List<QueueControl> matchingQueues = new ArrayList<>(); String[] queues = addressControl.getQueueNames(); for (String queue : queues) { QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queue); // Ignore the "special" subscription if (coreQueueControl != null && !coreQueueControl.getName().equals(addressControl.getAddress())) { if (durability == DurabilityType.ALL || durability == DurabilityType.DURABLE && coreQueueControl.isDurable() || durability == DurabilityType.NON_DURABLE && !coreQueueControl.isDurable()) { matchingQueues.add(coreQueueControl); } } } return matchingQueues; } catch (Exception e) { return Collections.emptyList(); } }
private int removeMessages(final String filterStr, AddressControl addressControl, ManagementService managementService) throws Exception { String filter = createFilterFromJMSSelector(filterStr); int count = 0; String[] queues = addressControl.getQueueNames(); for (String queue : queues) { QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queue); if (coreQueueControl != null) { count += coreQueueControl.removeMessages(filter); } } return count; }
@Override public List<String> listAllSubscribersForTopic(final String s) throws Exception { ObjectName objectName = ObjectNameBuilder.DEFAULT.getAddressObjectName(new SimpleString(s)); AddressControl topic = MBeanServerInvocationHandler.newProxyInstance(ManagementFactory.getPlatformMBeanServer(), objectName, AddressControl.class, false); Object[] subInfos = topic.getQueueNames(); List<String> subs = new ArrayList<>(); for (Object o : subInfos) { subs.add( ((String) o).split("\\.")[1]); } return subs; }
reportRoles(context, json); } else if (QUEUE_NAMES.equals(name)) { String[] queues = addressControl.getQueueNames(); reportListOfStrings(context, queues); } else if (NUMBER_OF_BYTES_PER_PAGE.equals(name)) {
reportRoles(context, json); } else if (QUEUE_NAMES.equals(name)) { String[] queues = addressControl.getQueueNames(); reportListOfStrings(context, queues); } else if (NUMBER_OF_BYTES_PER_PAGE.equals(name)) {
AddressControl addressControl = (AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + name); if (addressControl != null) { for (String queueName : addressControl.getQueueNames()) { Binding binding = server.getPostOffice().getBinding(new SimpleString(queueName)); if (binding == null) { if (addressControl.getQueueNames().length == 0) { try { server.removeAddressInfo(SimpleString.toSimpleString(name), null);
@Test(timeout = 60000) public void testAddressControlSendMessageWithText() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); server.createQueue(address, RoutingType.ANYCAST, address, null, true, false); AddressControl addressControl = ManagementControlHelper.createAddressControl(address, mBeanServer); Assert.assertEquals(1, addressControl.getQueueNames().length); addressControl.sendMessage(null, org.apache.activemq.artemis.api.core.Message.TEXT_TYPE, "test", false, fullUser, fullPass); Wait.assertEquals(1, addressControl::getMessageCount); Assert.assertEquals(1, addressControl.getMessageCount()); Connection connection = createConnection("myClientId"); try { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Queue queue = session.createQueue(address.toString()); MessageConsumer consumer = session.createConsumer(queue); Message message = consumer.receive(500); assertNotNull(message); String text = ((TextMessage) message).getText(); assertEquals("test", text); session.close(); connection.close(); } finally { if (connection != null) { connection.close(); } } }
@Test(timeout = 60000) public void testAddressControlSendMessage() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); server.createQueue(address, RoutingType.ANYCAST, address, null, true, false); AddressControl addressControl = ManagementControlHelper.createAddressControl(address, mBeanServer); Assert.assertEquals(1, addressControl.getQueueNames().length); addressControl.sendMessage(null, org.apache.activemq.artemis.api.core.Message.BYTES_TYPE, Base64.encodeBytes("test".getBytes()), false, fullUser, fullPass); Wait.assertEquals(1, addressControl::getMessageCount); Connection connection = createConnection("myClientId"); try { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Queue queue = session.createQueue(address.toString()); MessageConsumer consumer = session.createConsumer(queue); Message message = consumer.receive(5000); assertNotNull(message); byte[] buffer = new byte[(int)((BytesMessage)message).getBodyLength()]; ((BytesMessage)message).readBytes(buffer); assertEquals("test", new String(buffer)); session.close(); connection.close(); } finally { if (connection != null) { connection.close(); } } }
@Test public void testGetQueueNames() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); SimpleString anotherQueue = RandomUtil.randomSimpleString(); session.createQueue(address, queue, true); AddressControl addressControl = createManagementControl(address); String[] queueNames = addressControl.getQueueNames(); Assert.assertEquals(1, queueNames.length); Assert.assertEquals(queue.toString(), queueNames[0]); session.createQueue(address, anotherQueue, false); queueNames = addressControl.getQueueNames(); Assert.assertEquals(2, queueNames.length); session.deleteQueue(queue); queueNames = addressControl.getQueueNames(); Assert.assertEquals(1, queueNames.length); Assert.assertEquals(anotherQueue.toString(), queueNames[0]); session.deleteQueue(anotherQueue); }
Wait.waitFor(() -> topicControl1.getQueueNames().length == 3, 2000)); Wait.waitFor(() -> topicControl2.getQueueNames().length == 3, 2000));
@Test public void testSendMessage() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); session.createAddress(address, RoutingType.ANYCAST, false); AddressControl addressControl = createManagementControl(address); Assert.assertEquals(0, addressControl.getQueueNames().length); session.createQueue(address, RoutingType.ANYCAST, address); Assert.assertEquals(1, addressControl.getQueueNames().length); addressControl.sendMessage(null, Message.BYTES_TYPE, Base64.encodeBytes("test".getBytes()), false, null, null); Wait.waitFor(() -> addressControl.getMessageCount() == 1); Assert.assertEquals(1, addressControl.getMessageCount()); ClientConsumer consumer = session.createConsumer(address); ClientMessage message = consumer.receive(500); assertNotNull(message); byte[] buffer = new byte[message.getBodyBuffer().readableBytes()]; message.getBodyBuffer().readBytes(buffer); assertEquals("test", new String(buffer)); }
@Test public void testTopicPrefixWhenUseJndiIsFalse() throws Exception { final String prefix = "jms.topic."; final String destinationName = "test"; final SimpleString prefixedDestinationName = SimpleString.toSimpleString(prefix + destinationName); server.addAddressInfo(new AddressInfo(prefixedDestinationName).addRoutingType(RoutingType.MULTICAST)); ActiveMQResourceAdapter ra = new ActiveMQResourceAdapter(); ra.setConnectorClassName(INVM_CONNECTOR_FACTORY); ra.start(new BootstrapContext()); Connection conn = ra.getDefaultActiveMQConnectionFactory().createConnection(); conn.close(); ActiveMQActivationSpec spec = new ActiveMQActivationSpec(); spec.setResourceAdapter(ra); spec.setUseJNDI(false); spec.setDestinationType("javax.jms.Topic"); spec.setDestination(destinationName); spec.setTopicPrefix(prefix); spec.setMaxSession(1); spec.setSetupAttempts(1); ActiveMQActivation activation = new ActiveMQActivation(ra, new MessageEndpointFactory(), spec); activation.start(); assertEquals(1, ((AddressControl)server.getManagementService().getResource(ResourceNames.ADDRESS + prefixedDestinationName)).getQueueNames().length); activation.stop(); }