Class: GorgonBunny::Consumer
- Inherits:
-
Object
- Object
- GorgonBunny::Consumer
- Defined in:
- lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb
Overview
Base class that represents consumer interface. Subclasses of this class implement specific logic of handling consumer life cycle events. Note that when the only event you are interested in is message deliveries, it is recommended to just use Queue#subscribe instead of subclassing this class.
Instance Attribute Summary collapse
- #arguments ⇒ Object readonly
-
#channel ⇒ Object
readonly
API.
- #consumer_tag ⇒ Object
- #exclusive ⇒ Object readonly
- #no_ack ⇒ Object readonly
- #queue ⇒ Object readonly
Instance Method Summary collapse
-
#automatic_acknowledgement? ⇒ Boolean
True if this consumer uses automatic acknowledgement mode.
-
#call(*args) ⇒ Object
(also: #handle_delivery)
Invokes message delivery handler.
-
#cancel ⇒ Object
Cancels this consumer.
-
#handle_cancellation(basic_cancel) ⇒ Object
Invokes consumer cancellation notification handler.
-
#initialize(channel, queue, consumer_tag = channel.generate_consumer_tag, no_ack = true, exclusive = false, arguments = {}) ⇒ Consumer
constructor
A new instance of Consumer.
-
#inspect ⇒ String
More detailed human-readable string representation of this consumer.
-
#manual_acknowledgement? ⇒ Boolean
True if this consumer uses manual (explicit) acknowledgement mode.
-
#on_cancellation(&block) ⇒ Object
Defines consumer cancellation notification handler.
-
#on_delivery(&block) ⇒ Object
Defines message delivery handler.
- #queue_name ⇒ Object
- #recover_from_network_failure ⇒ Object
-
#to_s ⇒ String
Brief human-readable string representation of this consumer.
Constructor Details
#initialize(channel, queue, consumer_tag = channel.generate_consumer_tag, no_ack = true, exclusive = false, arguments = {}) ⇒ Consumer
Returns a new instance of Consumer.
34 35 36 37 38 39 40 41 42 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 34 def initialize(channel, queue, consumer_tag = channel.generate_consumer_tag, no_ack = true, exclusive = false, arguments = {}) @channel = channel || raise(ArgumentError, "channel is nil") @queue = queue || raise(ArgumentError, "queue is nil") @consumer_tag = consumer_tag @exclusive = exclusive @arguments = arguments # no_ack set to true = no manual ack = automatic ack. MK. @no_ack = no_ack end |
Instance Attribute Details
#arguments ⇒ Object (readonly)
20 21 22 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 20 def arguments @arguments end |
#channel ⇒ Object (readonly)
API
17 18 19 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 17 def channel @channel end |
#consumer_tag ⇒ Object
19 20 21 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 19 def consumer_tag @consumer_tag end |
#exclusive ⇒ Object (readonly)
22 23 24 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 22 def exclusive @exclusive end |
#no_ack ⇒ Object (readonly)
21 22 23 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 21 def no_ack @no_ack end |
#queue ⇒ Object (readonly)
18 19 20 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 18 def queue @queue end |
Instance Method Details
#automatic_acknowledgement? ⇒ Boolean
Returns true if this consumer uses automatic acknowledgement mode.
95 96 97 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 95 def automatic_acknowledgement? @no_ack == true end |
#call(*args) ⇒ Object Also known as: handle_delivery
Invokes message delivery handler
53 54 55 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 53 def call(*args) @on_delivery.call(*args) if @on_delivery end |
#cancel ⇒ Object
Cancels this consumer. Messages for this consumer will no longer be delivered. If the queue it was on is auto-deleted and this consumer was the last one, the queue will be deleted.
79 80 81 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 79 def cancel @channel.basic_cancel(@consumer_tag) end |
#handle_cancellation(basic_cancel) ⇒ Object
Invokes consumer cancellation notification handler
70 71 72 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 70 def handle_cancellation(basic_cancel) @on_cancellation.call(basic_cancel) if @on_cancellation end |
#inspect ⇒ String
Returns More detailed human-readable string representation of this consumer.
84 85 86 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 84 def inspect "#<#{self.class.name}:#{object_id} @channel_id=#{@channel.number} @queue=#{self.queue_name}> @consumer_tag=#{@consumer_tag} @exclusive=#{@exclusive} @no_ack=#{@no_ack}>" end |
#manual_acknowledgement? ⇒ Boolean
Returns true if this consumer uses manual (explicit) acknowledgement mode.
101 102 103 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 101 def manual_acknowledgement? @no_ack == false end |
#on_cancellation(&block) ⇒ Object
Defines consumer cancellation notification handler
63 64 65 66 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 63 def on_cancellation(&block) @on_cancellation = block self end |
#on_delivery(&block) ⇒ Object
Defines message delivery handler
46 47 48 49 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 46 def on_delivery(&block) @on_delivery = block self end |
#queue_name ⇒ Object
115 116 117 118 119 120 121 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 115 def queue_name if @queue.respond_to?(:name) @queue.name else @queue end end |
#recover_from_network_failure ⇒ Object
110 111 112 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 110 def recover_from_network_failure @channel.basic_consume_with(self) end |
#to_s ⇒ String
Returns Brief human-readable string representation of this consumer.
89 90 91 |
# File 'lib/gorgon_bunny/lib/gorgon_bunny/consumer.rb', line 89 def to_s "#<#{self.class.name}:#{object_id} @channel_id=#{@channel.number} @queue=#{self.queue_name}> @consumer_tag=#{@consumer_tag}>" end |