class Qpid::Messaging::Session
A Session
represents a distinct conversation between end points. They are created from an active (i.e., not closed) Connection
.
A Session
is used to acknowledge individual or all messages that have passed through it
Public Instance Methods
Acknowledges one or more outstanding messages that have been received on this session.
Arguments¶ ↑
-
options
- the set of options
Options¶ ↑
-
:message - if specified, then only that
Message
is acknowledged -
:sync - if true, the call will block until processed by the broker
Examples¶ ↑
# acknowledge all received messages session.acknowledge # acknowledge a single message session.acknowledge :message => message # acknowledge all messages, wait until the call finishes session.acknowledge :sync => true
# File lib/qpid_messaging/session.rb, line 148 def acknowledge(options = {}) sync = options[:sync] || false message = options[:message] if options[:message] unless message.nil? @session_impl.acknowledge message.message_impl, sync else @session_impl.acknowledge sync end end
Closes the Session
and all associated Sender
and Receiver
instances.
NOTE: All Session
instances for a Connection
are closed when the Connection
is closed. But closing a Session
does not affect the owning Connection
.
# File lib/qpid_messaging/session.rb, line 114 def close; @session_impl.close; end
Commits any pending transactions for a transactional session.
# File lib/qpid_messaging/session.rb, line 117 def commit; @session_impl.commit; end
Returns the Connection
associated with this session.
# File lib/qpid_messaging/session.rb, line 41 def connection @connection end
Creates a new endpoint for receiving messages.
The address
can either be an instance Address
or else an address string.
Arguments¶ ↑
-
address
- the end point address.
# File lib/qpid_messaging/session.rb, line 85 def create_receiver(address) result = nil receiver_impl = nil if address.class == Qpid::Messaging::Address address_impl = address.address_impl receiver_impl = @session_impl.createReceiver address_impl else receiver_impl = @session_impl.createReceiver(address) end Qpid::Messaging::Receiver.new self, receiver_impl end
Creates a new endpoint for sending messages.
The address can either be an instance Address
or else an address string.
Arguments¶ ↑
-
address
- the end point address.
# File lib/qpid_messaging/session.rb, line 53 def create_sender(address) _address = address if address.class == Qpid::Messaging::Address _address = address.address_impl end sender_impl = @session_impl.createSender(_address) sender_name = sender_impl.getName Qpid::Messaging::Sender.new(self, sender_impl) end
If the Session
has been rendered invalid due to some exception, this method will result in that exception being raised.
If none have occurred, then no exceptions are raised.
Examples¶ ↑
# show any errors that occurred during the Session if @session.errors? begin @session.errors rescue Exception => error puts "An error occurred: #{error}" end end
# File lib/qpid_messaging/session.rb, line 257 def errors; @session_impl.checkError; end
Returns true if there were exceptions on this session.
# File lib/qpid_messaging/session.rb, line 240 def errors?; @session_impl.hasError; end
Fetches the next Receiver
with a message pending. Waits the specified number of milliseconds before timing out.
For a Receiver
to be returned, it must have a capacity > 0 and have Messages locally queued.
If no Receiver
is found within the time out period, then a MessageError is raised.
Arguments¶ ↑
-
timeout
- the duration
Examples¶ ↑
loop do begin # wait a maximum of one minute for the next receiver to be ready recv = session.next_receiver Qpid::Messaging::Duration::MINUTE # get and dispatch the message msg = recv.get dispatch_message msg rescue puts "No receivers were returned" end end
# File lib/qpid_messaging/session.rb, line 228 def next_receiver(timeout = Qpid::Messaging::Duration::FOREVER, &block) receiver_impl = @session_impl.nextReceiver(timeout.duration_impl) unless receiver_impl.nil? recv = Qpid::Messaging::Receiver.new self, receiver_impl block.call recv unless block.nil? end return recv end
Returns the total number of receivable messages, and messages already received, by Receiver
instances associated with this Session
.
# File lib/qpid_messaging/session.rb, line 191 def receivable; @session_impl.getReceivable; end
Rejects the specified message. A rejected message will not be redelivered.
NOTE: A message cannot be rejected once it has been acknowledged.
# File lib/qpid_messaging/session.rb, line 163 def reject(message); @session_impl.reject message.message_impl; end
Releases the message, which allows the broker to attempt to redeliver it.
NOTE: A message connot be released once it has been acknowled.
# File lib/qpid_messaging/session.rb, line 169 def release(message); @session_impl.release message.message_impl; end
Rolls back any uncommitted transactions on a transactional session.
# File lib/qpid_messaging/session.rb, line 120 def rollback; @session_impl.rollback; end
Returns the number of messages that have been acknowledged by this Session
whose acknowledgements have not been confirmed as processed by the broker.
# File lib/qpid_messaging/session.rb, line 196 def unsettled_acks; @session_impl.getUnsettledAcks; end