Class: Bunny::Subscription
- Inherits:
-
Qrack::Subscription
- Object
- Qrack::Subscription
- Bunny::Subscription
- Defined in:
- lib/ext/bunny-0.6.0/lib/bunny/subscription08.rb
Overview
DESCRIPTION:
Asks the server to start a “consumer”, which is a transient request for messages from a specific queue. Consumers last as long as the channel they were created on, or until the client cancels them with an unsubscribe. Every time a message reaches the queue it is passed to the blk for processing. If error occurs, Bunny::ProtocolError is raised.
OPTIONS:
-
:consumer_tag => 'tag'
- Specifies the identifier for the consumer. The consumer tag is local to a connection, so two clients can use the same consumer tags. If this option is not specified a server generated name is used. -
:ack => false (default) or true
- If set to false, the server does not expect an acknowledgement message from the client. If set to true, the server expects an acknowledgement message from the client and will re-queue the message if it does not receive one within a time specified by the server. -
:exclusive => true or false (default)
- Request exclusive consumer access, meaning only this consumer can access the queue. -
:nowait => true or false (default)
- Ignored by Bunny, always false. -
<tt>:timeout => number of seconds - The subscribe loop will continue to wait for messages until terminated (Ctrl-C or kill command) or this timeout interval is reached.
-
:message_max => max number messages to process
- When the required number of messages is processed subscribe loop is exited.
OPERATION:
Passes a hash of message information to the block, if one has been supplied. The hash contains :header, :payload and :delivery_details. The structure of the data is as follows -
:header has instance variables -
@klass
@size
@weight
@properties is a hash containing -
:content_type
:delivery_mode
:priority
:payload contains the message contents
:delivery details is a hash containing -
:consumer_tag
:delivery_tag
:redelivered
:exchange
:routing_key
If the :timeout option is specified then Qrack::ClientTimeout is raised if method times out waiting to receive the next message from the queue.
EXAMPLES
my_queue.subscribe(:timeout => 5) {|msg| puts msg}
my_queue.subscribe(:message_max => 10, :ack => true) {|msg| puts msg}
Instance Attribute Summary
Attributes inherited from Qrack::Subscription
#ack, #client, #consumer_tag, #delivery_tag, #exclusive, #message_count, #message_max, #queue, #timeout
Instance Method Summary collapse
Methods inherited from Qrack::Subscription
Constructor Details
This class inherits a constructor from Qrack::Subscription
Instance Method Details
#setup_consumer ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/ext/bunny-0.6.0/lib/bunny/subscription08.rb', line 65 def setup_consumer client.send_frame( Qrack::Protocol::Basic::Consume.new({ :queue => queue.name, :consumer_tag => consumer_tag, :no_ack => !ack, :exclusive => exclusive, :nowait => false }.merge(@opts)) ) method = client.next_method client.check_response(method, Qrack::Protocol::Basic::ConsumeOk, "Error subscribing to queue #{queue.name}") @consumer_tag = method.consumer_tag end |