lib/hornetq/client/requestor_pattern.rb in jruby-hornetq-0.4.0 vs lib/hornetq/client/requestor_pattern.rb in jruby-hornetq-0.5.0.alpha

- old
+ new

@@ -1,23 +1,23 @@ module HornetQ::Client - # Implements the Requestor Pattern + # Implements the Requestor Pattern # Send a request to a server and wait for a reply # Parameters # * session # The session to use processing this request # Note: Sessions cannot be shared concurrently by multiple threads # * request_address # Address to send requests to. # It is expected that process listening to requests at this address has # implemented the ServerPattern - # * reply_address - # If supplied the reply_address must already exist and will be used for + # * reply_address + # If supplied the reply_address must already exist and will be used for # receiving responses # If not supplied a temporary queue will be created and used by this instance # of the RequestorPattern - # This optional parameter is normally not used + # This optional parameter is normally not used # * reply_queue # If a reply_address is supplied, the reply_queue name can be supplied if it # differs from reply_address class RequestorPattern def initialize(session, request_address, reply_address=nil, reply_queue=nil) @@ -35,78 +35,78 @@ rescue NativeException => exc p exc end end end - + # Synchronous Request and wait for reply - # + # # Returns the message received, or nil if no message was received in the # specified timeout. - # + # # The supplied request_message is updated as follows # * The property JMSReplyTo is set to the name of the reply to address # * Creates and sets the message user_id if not already set # * #TODO: The expiry is set to the message timeout if not already set - # - # Note: + # + # Note: # * The request will only look for a reply message with the same # user_id (message id) as the message that was sent. This is critical # since a previous receive may have timed out and we do not want - # to pickup the reponse to an earlier request - # + # to pickup the reponse to an earlier request + # # To receive a message after a timeout, call wait_for_reply with a nil message # id to receive any message on the queue - # + # # Use: submit_request & then wait_for_reply to break it into # two separate calls def request(request_message, timeout) #TODO set message expiry to timeout if not already set message_id = submit_request(request_message) wait_for_reply(message_id, timeout) end - + # Asynchronous Request # Use: submit_request & then wait_for_reply to break the request into # two separate calls. - # + # # For example, submit the request now, do some work, then later on # in the same thread wait for the reply. - # + # # The supplied request_message is updated as follows # * The property JMSReplyTo is set to the name of the reply to address # * Creates and sets the message user_id if not already set # * #TODO: The expiry is set to the message timeout if not already set - # + # # Returns Message id of the message that was sent def submit_request(request_message) request_message.reply_to_address = @reply_address request_message.generate_user_id unless request_message.user_id @producer.send(request_message) request_message.user_id end - + # Asynchronous wait for reply - # + # # Parameters: - # user_id: the user defined id to correlate a response for - # + # user_id: the user defined id to correlate a response for + # # Supply a nil user_id to receive any message from the queue - # + # # Returns the message received - # + # # Note: Call submit_request before calling this method def wait_for_reply(user_id, timeout) # We only want the reply to the supplied message_id, so set filter on message id filter = "#{Java::org.hornetq.api.core::FilterConstants::HORNETQ_USERID} = 'ID:#{user_id}'" if user_id @session.consumer(:queue_name => @reply_queue, :filter=>filter) do |consumer| consumer.receive(timeout) end end - + def close @session.delete_queue(@reply_queue) if @destroy_temp_queue @producer.close if @producer end end - + end \ No newline at end of file