This is in Artemis? On May 18, 2017 4:23 PM, "Guillaume Nodet" <gno...@apache.org> wrote:
> 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 >