String json = addressControl.getRolesAsJSON(); 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)) { long l = addressControl.getNumberOfBytesPerPage(); context.getResult().set(l); } else if (NUMBER_OF_PAGES.equals(name)) { int i = addressControl.getNumberOfPages(); context.getResult().set(i); } else if (BINDING_NAMES.equals(name)) { String[] bindings = addressControl.getBindingNames(); reportListOfStrings(context, bindings); } else {
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 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; }
@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(); } } }
context.getResult().set(control.getMessageCount()); } catch (RuntimeException e) { throw e; context.getResult().set(getNonDurableSubscriptionCount(control, managementService)); } else if (TOPIC_ADDRESS.getName().equals(attributeName)) { context.getResult().set(control.getAddress()); } else if (CommonAttributes.TEMPORARY.getName().equals(attributeName)) {
private Set<String> getCoreAddressNames() { final ManagementService managementService = getManagementService(); if (managementService == null) { return Collections.emptySet(); } else { Set<String> result = new HashSet<String>(); for (Object obj : managementService.getResources(AddressControl.class)) { AddressControl ac = AddressControl.class.cast(obj); result.add(ac.getAddress()); } return result; } }
@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(); } } }
private void handleGetRolesAsJson(final OperationContext context, final ModelNode operation) { final AddressControl addressControl = getAddressControl(context, operation); try { String json = addressControl.getRolesAsJSON(); reportRolesAsJSON(context, json); } catch (RuntimeException e) { throw e; } catch (Exception e) { context.getFailureDescription().set(e.getLocalizedMessage()); } }
@Test public void testGetRoutedMessageCounts() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); session.createAddress(address, RoutingType.ANYCAST, false); AddressControl addressControl = createManagementControl(address); assertEquals(0, addressControl.getMessageCount()); ClientProducer producer = session.createProducer(address.toString()); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 0, 2000, 100)); assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() == 1, 2000, 100)); session.createQueue(address, RoutingType.ANYCAST, address); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 1, 2000, 100)); assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() == 1, 2000, 100)); session.createQueue(address, RoutingType.ANYCAST, address.concat('2')); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 2, 2000, 100)); assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() == 1, 2000, 100)); session.deleteQueue(address); session.deleteQueue(address.concat('2')); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getRoutedMessageCount() == 2, 2000, 100)); assertTrue(Wait.waitFor(() -> addressControl.getUnRoutedMessageCount() == 2, 2000, 100)); }
Assert.assertEquals(0, addressControl.getNumberOfPages()); Assert.assertEquals(1, addressControl.getNumberOfPages()); Assert.assertEquals(1, addressControl.getNumberOfPages()); Assert.assertEquals("# of pages is 2", 2, addressControl.getNumberOfPages()); System.out.println("Address size=" + addressControl.getAddressSize()); Assert.assertEquals(serverQueue.getPageSubscription().getPagingStore().getAddressSize(), addressControl.getAddressSize());
@Test public void testGetMessageCount() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); session.createAddress(address, RoutingType.ANYCAST, false); AddressControl addressControl = createManagementControl(address); assertEquals(0, addressControl.getMessageCount()); ClientProducer producer = session.createProducer(address.toString()); producer.send(session.createMessage(false)); assertEquals(0, addressControl.getMessageCount()); session.createQueue(address, RoutingType.ANYCAST, address); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getMessageCount() == 1, 2000, 100)); session.createQueue(address, RoutingType.ANYCAST, address.concat('2')); producer.send(session.createMessage(false)); assertTrue(Wait.waitFor(() -> addressControl.getMessageCount() == 2, 2000, 100)); }
@Test public void testGetBindingNames() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); String divertName = RandomUtil.randomString(); session.createQueue(address, queue, false); AddressControl addressControl = createManagementControl(address); String[] bindingNames = addressControl.getBindingNames(); assertEquals(1, bindingNames.length); assertEquals(queue.toString(), bindingNames[0]); server.getActiveMQServerControl().createDivert(divertName, randomString(), address.toString(), RandomUtil.randomString(), false, null, null); bindingNames = addressControl.getBindingNames(); Assert.assertEquals(2, bindingNames.length); session.deleteQueue(queue); bindingNames = addressControl.getBindingNames(); assertEquals(1, bindingNames.length); assertEquals(divertName.toString(), bindingNames[0]); }
@Test public void testGetNumberOfBytesPerPage() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); session.createQueue(address, address, true); AddressControl addressControl = createManagementControl(address); Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultJournalFileSize(), addressControl.getNumberOfBytesPerPage()); session.close(); server.stop(); AddressSettings addressSettings = new AddressSettings(); addressSettings.setPageSizeBytes(1024); server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings); server.start(); ServerLocator locator2 = createInVMNonHALocator(); ClientSessionFactory sf2 = createSessionFactory(locator2); session = sf2.createSession(false, true, false); session.createQueue(address, address, true); Assert.assertEquals(1024, addressControl.getNumberOfBytesPerPage()); }
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; }
@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)); }
context.getResult().set(control.getMessageCount()); } catch (RuntimeException e) { throw e; context.getResult().set(getNonDurableSubscriptionCount(control, managementService)); } else if (TOPIC_ADDRESS.getName().equals(attributeName)) { context.getResult().set(control.getAddress()); } else if (CommonAttributes.TEMPORARY.getName().equals(attributeName)) {
private Set<String> getCoreAddressNames() { final ManagementService managementService = getManagementService(); if (managementService == null) { return Collections.emptySet(); } else { Set<String> result = new HashSet<String>(); for (Object obj : managementService.getResources(AddressControl.class)) { AddressControl ac = AddressControl.class.cast(obj); result.add(ac.getAddress()); } return result; } }
private void handleGetRolesAsJson(final OperationContext context, final ModelNode operation) { final AddressControl addressControl = getAddressControl(context, operation); try { String json = addressControl.getRolesAsJSON(); reportRolesAsJSON(context, json); } catch (RuntimeException e) { throw e; } catch (Exception e) { context.getFailureDescription().set(e.getLocalizedMessage()); } }
String json = addressControl.getRolesAsJSON(); 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)) { long l = addressControl.getNumberOfBytesPerPage(); context.getResult().set(l); } else if (NUMBER_OF_PAGES.equals(name)) { int i = addressControl.getNumberOfPages(); context.getResult().set(i); } else if (BINDING_NAMES.equals(name)) { String[] bindings = addressControl.getBindingNames(); reportListOfStrings(context, bindings); } else {
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); } } }