/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
/** * Sends a message to the request address and wait indefinitely for a reply. * The temporary queue is used for the REPLYTO_HEADER_NAME, and only one reply per request is expected * * @param request the message to send * @return the reply message * @throws Exception */ public ClientMessage request(final ClientMessage request) throws Exception { return request(request, 0); }
public synchronized int size(){ ClientSession session; try { session = sf.createSession(false, false, false); ClientRequestor requestor = new ClientRequestor(session, "hornetq.management"); ClientMessage m = session.createMessage(false); ManagementHelper.putAttribute(m, "core.queue." + queueName, "messageCount"); ClientMessage reply = requestor.request(m); int count = (Integer) ManagementHelper.getResult(reply); return count; } catch (Exception e) { e.printStackTrace(); } return 0; }
@Override public void run() throws Exception { requestor.request(session.createMessage(false), 500); } };
ServerLocator locator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName())); ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(false, true, true); session.start(); ClientRequestor requestor = new ClientRequestor(session, "jms.queue.hornetq.management"); ClientMessage message = session.createMessage(false); ManagementHelper.putAttribute(message, ResourceNames.CORE_SERVER, "queueNames"); ClientMessage reply = requestor.request(message); Object queueNames = ManagementHelper.getResult(reply);
private Integer getQueueID(ClientSession session, SimpleString queueName) throws Exception { Integer queueID = -1; Object result; try (ClientRequestor requestor = new ClientRequestor(session, "activemq.management")) { ClientMessage managementMessage = session.createMessage(false); ManagementHelper.putAttribute(managementMessage, ResourceNames.QUEUE + queueName, "ID"); session.start(); logger.debug("Requesting ID for: " + queueName); ClientMessage reply = requestor.request(managementMessage); result = ManagementHelper.getResult(reply); } if (result != null && result instanceof Number) { queueID = ((Number) result).intValue(); } return queueID; }
protected Object invokeSyncOperation(final String resourceName, final String operationName, final Object... parameters) throws Exception { ClientMessage message = clientSession.createMessage(false); ManagementHelper.putOperationInvocation(message, resourceName, operationName, parameters); ClientMessage reply; try { reply = requestor.request(message, 3000); } catch (Exception e) { throw new IllegalStateException("Exception while invoking " + operationName + " on " + resourceName, e); } if (reply == null) { throw new IllegalStateException("no reply received when invoking " + operationName + " on " + resourceName); } if (!ManagementHelper.hasOperationSucceeded(reply)) { throw new IllegalStateException("operation failed when invoking " + operationName + " on " + resourceName + ": " + ManagementHelper.getResult(reply)); } return ManagementHelper.getResult(reply); }
public Object retrieveAttributeValue(final String attributeName, final Class desiredType) { try (ClientSessionFactory sessionFactory = locator.createSessionFactory(); ClientSession session = getSession(sessionFactory); ClientRequestor requestor = getClientRequestor(session)) { ClientMessage m = session.createMessage(false); ManagementHelper.putAttribute(m, resourceName, attributeName); ClientMessage reply; reply = requestor.request(m); Object result = ManagementHelper.getResult(reply, desiredType); return result; } catch (Exception e) { throw new IllegalStateException(e); } }
public void performCoreManagement(ManagementCallback<ClientMessage> cb) throws Exception { try (ActiveMQConnectionFactory factory = createCoreConnectionFactory(); ServerLocator locator = factory.getServerLocator(); ClientSessionFactory sessionFactory = locator.createSessionFactory(); ClientSession session = sessionFactory.createSession(user, password, false, true, true, false, ActiveMQClient.DEFAULT_ACK_BATCH_SIZE)) { session.start(); ClientRequestor requestor = new ClientRequestor(session, "activemq.management"); ClientMessage message = session.createMessage(false); cb.setUpInvocation(message); ClientMessage reply = requestor.request(message); if (ManagementHelper.hasOperationSucceeded(reply)) { cb.requestSuccessful(reply); } else { cb.requestFailed(reply); } } }
protected ClientMessage getQueueAttribute(String queueName, String attribute) throws Exception { try (ServerLocator serverLocator = ActiveMQClient.createServerLocator(brokerURL)) { try (ClientSessionFactory sf = serverLocator.createSessionFactory()) { ClientSession managementSession; if (user != null || password != null) { managementSession = sf.createSession(user, password, false, true, true, false, 0); } else { managementSession = sf.createSession(false, true, true); } managementSession.start(); try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) { ClientMessage managementMessage = managementSession.createMessage(false); ManagementHelper.putAttribute(managementMessage, ResourceNames.QUEUE + queueName, attribute); managementSession.start(); ClientMessage reply = requestor.request(managementMessage); return reply; } finally { managementSession.stop(); } } } }
protected ClientMessage getQueueAttribute(String queueName, String attribute) throws Exception { try (ServerLocator serverLocator = ActiveMQClient.createServerLocator(brokerURL)) { try (ClientSessionFactory sf = serverLocator.createSessionFactory()) { ClientSession managementSession; if (user != null || password != null) { managementSession = sf.createSession(user, password, false, true, true, false, 0); } else { managementSession = sf.createSession(false, true, true); } managementSession.start(); try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) { ClientMessage managementMessage = managementSession.createMessage(false); ManagementHelper.putAttribute(managementMessage, ResourceNames.QUEUE + queueName, attribute); managementSession.start(); ClientMessage reply = requestor.request(managementMessage); return reply; } finally { managementSession.stop(); } } } }
public void performCoreManagement(ManagementCallback<ClientMessage> cb) throws Exception { try (ActiveMQConnectionFactory factory = createCoreConnectionFactory(); ServerLocator locator = factory.getServerLocator(); ClientSessionFactory sessionFactory = locator.createSessionFactory(); ClientSession session = sessionFactory.createSession(user, password, false, true, true, false, ActiveMQClient.DEFAULT_ACK_BATCH_SIZE)) { session.start(); ClientRequestor requestor = new ClientRequestor(session, "activemq.management"); ClientMessage message = session.createMessage(false); cb.setUpInvocation(message); ClientMessage reply = requestor.request(message); if (ManagementHelper.hasOperationSucceeded(reply)) { cb.requestSuccessful(reply); } else { cb.requestFailed(reply); } } }
public Object invokeOperation(final Class desiredType, final String operationName, final Object... args) throws Exception { try (ClientSessionFactory sessionFactory = locator.createSessionFactory(); ClientSession session = getSession(sessionFactory); ClientRequestor requestor = getClientRequestor(session)) { ClientMessage m = session.createMessage(false); ManagementHelper.putOperationInvocation(m, resourceName, operationName, args); ClientMessage reply = requestor.request(m); if (reply != null) { if (ManagementHelper.hasOperationSucceeded(reply)) { return ManagementHelper.getResult(reply, desiredType); } else { throw new Exception((String) ManagementHelper.getResult(reply)); } } else { return null; } } }
@Test public void testRequest() throws Exception { final SimpleString key = RandomUtil.randomSimpleString(); long value = RandomUtil.randomLong(); SimpleString requestAddress = new SimpleString("AdTest"); SimpleString requestQueue = RandomUtil.randomSimpleString(); final ClientSession session = sf.createSession(false, true, true); session.start(); session.createTemporaryQueue(requestAddress, requestQueue); ClientConsumer requestConsumer = session.createConsumer(requestQueue); requestConsumer.setMessageHandler(new SimpleMessageHandler(key, session)); ClientRequestor requestor = new ClientRequestor(session, requestAddress); ClientMessage request = session.createMessage(false); request.putLongProperty(key, value); ClientMessage reply = requestor.request(request, 500); Assert.assertNotNull("reply was not received", reply); Assert.assertEquals(value, reply.getObjectProperty(key)); Thread.sleep(5000); session.close(); }
@Test public void testRequestWithRequestConsumerWhichDoesNotReply() throws Exception { SimpleString requestAddress = RandomUtil.randomSimpleString(); SimpleString requestQueue = RandomUtil.randomSimpleString(); ClientSessionFactory sf = createSessionFactory(locator); final ClientSession session = sf.createSession(false, true, true); session.start(); session.createTemporaryQueue(requestAddress, requestQueue); ClientConsumer requestConsumer = session.createConsumer(requestQueue); requestConsumer.setMessageHandler(new MessageHandler() { // return a message with the negative request's value @Override public void onMessage(final ClientMessage request) { // do nothing -> no reply } }); ClientRequestor requestor = new ClientRequestor(session, requestAddress); ClientMessage request = session.createMessage(false); ClientMessage reply = requestor.request(request, 500); Assert.assertNull(reply); session.close(); }