class Philotic::Consumer

Public Class Methods

auto_acknowledge() click to toggle source
# File lib/philotic/consumer.rb, line 24
def auto_acknowledge
  @auto_acknowledge = true
end
auto_acknowledge?() click to toggle source
# File lib/philotic/consumer.rb, line 28
def auto_acknowledge?
  !!@auto_acknowledge
end
exclusive() click to toggle source
# File lib/philotic/consumer.rb, line 32
def exclusive
  @exclusive = true
end
exclusive?() click to toggle source
# File lib/philotic/consumer.rb, line 36
def exclusive?
  !!@exclusive
end
manually_acknowledge() click to toggle source
# File lib/philotic/consumer.rb, line 16
def manually_acknowledge
  @manually_acknowledge = true
end
manually_acknowledge?() click to toggle source
# File lib/philotic/consumer.rb, line 20
def manually_acknowledge?
  !!@manually_acknowledge
end
rejectable_errors(*errors) click to toggle source
# File lib/philotic/consumer.rb, line 46
def rejectable_errors(*errors)
  @rejectable_errors ||= Set.new
  @rejectable_errors.merge errors
  @rejectable_errors
end
requeueable_errors(*errors) click to toggle source
# File lib/philotic/consumer.rb, line 40
def requeueable_errors(*errors)
  @requeueable_errors ||= Set.new
  @requeueable_errors.merge errors
  @requeueable_errors
end
subscribe() click to toggle source
# File lib/philotic/consumer.rb, line 52
def subscribe
  new(Philotic.connection).tap do |instance|
    instance.subscribe
  end
end
subscribe_to(subscription) click to toggle source
# File lib/philotic/consumer.rb, line 8
def subscribe_to(subscription)
  @subscription = subscription
end
subscription() click to toggle source
# File lib/philotic/consumer.rb, line 12
def subscription
  @subscription
end
subscription_options() click to toggle source
# File lib/philotic/consumer.rb, line 58
def subscription_options
  {
    manual_ack: auto_acknowledge? || manually_acknowledge?,
    exclusive:  exclusive?,
  }
end

Public Instance Methods

consume(message) click to toggle source
# File lib/philotic/consumer.rb, line 72
def consume(message)
  raise NotImplementedError
end
subscribe() click to toggle source
Calls superclass method Philotic::Subscriber#subscribe
# File lib/philotic/consumer.rb, line 66
def subscribe
  super(self.class.subscription, self.class.subscription_options) do |message|
    _consume(message)
  end
end

Private Instance Methods

_consume(message) click to toggle source
# File lib/philotic/consumer.rb, line 78
def _consume(message)
  if self.class.auto_acknowledge?
    begin
      consume(message)
      acknowledge(message)
    rescue => e
      if self.class.requeueable_errors.include? e.class
        reject(message, true)
      elsif self.class.rejectable_errors.include? e.class
        reject(message, false)
      else
        raise e
      end
    end
  else
    consume(message)
  end
end