Class: HotBunnies::Queue::BlockingSubscriber

Inherits:
Object
  • Object
show all
Includes:
Subscriber
Defined in:
lib/hot_bunnies/queue.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Subscriber

#handle_message, #on_message

Constructor Details

#initialize(channel, subscription) ⇒ BlockingSubscriber

Returns a new instance of BlockingSubscriber.



148
149
150
151
152
# File 'lib/hot_bunnies/queue.rb', line 148

def initialize(channel, subscription)
  @channel = channel
  @subscription = subscription
  @consumer = QueueingConsumer.new(@channel)
end

Instance Attribute Details

#consumerObject (readonly)

Returns the value of attribute consumer.



146
147
148
# File 'lib/hot_bunnies/queue.rb', line 146

def consumer
  @consumer
end

Instance Method Details

#consumer_tagObject



154
155
156
# File 'lib/hot_bunnies/queue.rb', line 154

def consumer_tag
  @consumer.consumer_tag
end

#startObject



158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/hot_bunnies/queue.rb', line 158

def start
  super
  while delivery = @consumer.next_delivery
    result = handle_message(@consumer.consumer_tag, delivery.envelope, delivery.properties, delivery.body)
    if result == :cancel
      @subscription.cancel
      while delivery = @consumer.next_delivery(0)
        handle_message(@consumer.consumer_tag, delivery.envelope, delivery.properties, delivery.body)
      end
      break
    end
  end
end