I'm trying do perform management operation with pure JMS api. To retrieve the list of queues, I'm currently using the following code:
QueueSession session = ((QueueConnection) connection).createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue managementQueue = session.createQueue("activemq.management"); QueueRequestor requestor = new QueueRequestor(session, managementQueue); connection.start(); TextMessage m = session.createTextMessage(); m.setStringProperty("_AMQ_ResourceName", "broker"); m.setStringProperty("_AMQ_OperationName", "getQueueNames"); m.setText("[\"" + routing + "\"]"); Message reply = requestor.request(m); Class<?> mgmtHelperClass = connection.getClass().getClassLoader().loadClass("org.apache.activemq.artemis.api.jms.management.JMSManagementHelper"); Method getResultsMethod = mgmtHelperClass.getMethod("getResults", Message.class); Object[] results = (Object[]) getResultsMethod.invoke(null, reply); List<String> names = new ArrayList<>(); for (Object o : (Object[]) (results[0])) { names.add(o.toString()); } return names; It works, but I think I should not have to use reflection to access the result message, hence the use of reflection to access the JMSManagementHelper methods. It seems to me the reply should be of type TextMessage, but it's currently untyped, so I can't use TextMessage#getText to retrieve the json result, and I can't find a way to retrieve it another way. Do I miss anything ? -- ------------------------ Guillaume Nodet