package org.apache.activemq.recipes; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TemporaryQueue; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class RequesterExample implements MessageListener { private final String connectionUri = "tcp://localhost:61616"; private ActiveMQConnectionFactory connectionFactory; private Connection connection; private Session session; private Destination destination; private static final int NUM_REQUESTS = 10; private final CountDownLatch done = new CountDownLatch(NUM_REQUESTS); public void before() throws Exception { connectionFactory = new ActiveMQConnectionFactory(connectionUri); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createQueue("REQUEST.QUEUE"); } public void after() throws Exception { if (connection != null) { connection.close(); } } public void run() throws Exception { TemporaryQueue responseQ = session.createTemporaryQueue(); MessageProducer requester = session.createProducer(destination); MessageConsumer responseListener = session.createConsumer(responseQ); responseListener.setMessageListener(this); for (int i = 0; i < NUM_REQUESTS; i++) { TextMessage request = session.createTextMessage("Job Request"); request.setJMSReplyTo(responseQ); request.setJMSCorrelationID("request: " + i); System.out.println(request.getText()); requester.send(request); } if (done.await(10, TimeUnit.MINUTES)) { System.out.println("Woohoo! Work's all done!"); } else { System.out.println("Doh!! Work didn't get done."); } } public void onMessage(Message message) { try { String jmsCorrelation = message.getJMSCorrelationID(); if (!jmsCorrelation.startsWith("request")) { System.out.println("Received an unexpected response: " + jmsCorrelation); } TextMessage txtResponse = (TextMessage) message; System.out.println(txtResponse.getText()); done.countDown(); } catch (Exception ex) { } } public static void main(String[] args) { RequesterExample example = new RequesterExample(); System.out.print("\n\n\n"); System.out.println("Starting Requester example now..."); try { example.before(); example.run(); example.after(); } catch (Exception e) { System.out.println("Caught an exception during the example: " + e.getMessage()); } System.out.println("Finished running the Requester example."); System.out.print("\n\n\n"); } }