Class: PikaQ::Consumers::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/pika_q/consumers/base.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.consumerObject (readonly)

Returns the value of attribute consumer.



7
8
9
# File 'lib/pika_q/consumers/base.rb', line 7

def consumer
  @consumer
end

.consumer_tagObject (readonly)

Returns the value of attribute consumer_tag.



7
8
9
# File 'lib/pika_q/consumers/base.rb', line 7

def consumer_tag
  @consumer_tag
end

.exchangeObject (readonly)

Returns the value of attribute exchange.



7
8
9
# File 'lib/pika_q/consumers/base.rb', line 7

def exchange
  @exchange
end

.queueObject (readonly)

Returns the value of attribute queue.



7
8
9
# File 'lib/pika_q/consumers/base.rb', line 7

def queue
  @queue
end

.routing_keyObject (readonly)

Returns the value of attribute routing_key.



7
8
9
# File 'lib/pika_q/consumers/base.rb', line 7

def routing_key
  @routing_key
end

Class Method Details

.config(options = {}) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/pika_q/consumers/base.rb', line 10

def self.config(options = {})
  options ||= {} if options.nil?
  options = default_config.merge(options)
  @consumer_tag = options.fetch(:consumer_tag)
  @exchange = options.fetch(:exchange)
  @routing_key = options.fetch(:routing_key)
  @queue = options.fetch(:queue)
end

.start(channel, &block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/pika_q/consumers/base.rb', line 19

def self.start(channel, &block)
  @exchange = exchange.establish(channel) if exchange.respond_to? :establish
  @queue = queue.create(channel) if queue.respond_to? :create

  unless exchange.predeclared?
    queue.bind(exchange, { routing_key: routing_key })
  end

  @consumer = queue.subscribe(manual_ack: true,
                            block: true,
                            consumer_tag: consumer_tag,
                            &Proc.new)
  consumer
rescue Interrupt
  consumer.cancel
  consumer.channel.close
end