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.



177
178
179
180
181
# File 'lib/hot_bunnies/queue.rb', line 177

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

Instance Attribute Details

#consumerObject (readonly)

Returns the value of attribute consumer.



175
176
177
# File 'lib/hot_bunnies/queue.rb', line 175

def consumer
  @consumer
end

Instance Method Details

#consumer_tagObject



183
184
185
# File 'lib/hot_bunnies/queue.rb', line 183

def consumer_tag
  @consumer.consumer_tag
end

#startObject



187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/hot_bunnies/queue.rb', line 187

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