TopicRequestor.java |
/* * JBoss, the OpenSource EJB server * * Distributable under LGPL license. * See terms of license at gnu.org. */ package javax.jms; /** * Provides a basic request/reply layer ontop of JMS. * Pass the constructor details of the session/topic to send requests upon. * Then call the request method to send a request. The method will block * until the reply is received. * * @author Chris Kimpton (chris@kimptoc.net) * @author adrian brock (adrian@jboss.com) * @version $Revision: 1.6 $ */ public class TopicRequestor { // Constants ----------------------------------------------------- private TopicSession topicSession = null; private Topic topic = null; private TopicPublisher requestPublisher = null; private TemporaryTopic responseTopic = null; private TopicSubscriber responseSubscriber = null; // Attributes ---------------------------------------------------- // Static -------------------------------------------------------- // Constructors -------------------------------------------------- public TopicRequestor(TopicSession session, Topic topic) throws JMSException { topicSession = session; this.topic = topic; requestPublisher = topicSession.createPublisher(topic); responseTopic = topicSession.createTemporaryTopic(); responseSubscriber = topicSession.createSubscriber(responseTopic); } // Public -------------------------------------------------------- public Message request(Message message) throws JMSException { message.setJMSReplyTo(responseTopic); requestPublisher.publish(message); return responseSubscriber.receive(); } public void close() throws JMSException { responseSubscriber.close(); responseTopic.delete(); topicSession.close(); } // Package protected --------------------------------------------- // Protected ----------------------------------------------------- // Private ------------------------------------------------------- // Inner classes ------------------------------------------------- }
TopicRequestor.java |