module RabidMQ::Listener

Attributes

amqp_exchange[R]
amqp_queue[R]
routing_key[R]

Public Class Methods

amqp(queue, exchange, exclusive: false, routing_key: ' click to toggle source
# File lib/rabid_mq/listener.rb, line 23
def amqp(queue, exchange, exclusive: false, routing_key: '#', include_environment_name: true)
  self.queue_name queue, exclusive: exclusive, include_environment_name: include_environment_name
  self.exchange(exchange, include_environment_name: include_environment_name)
  @routing_key = routing_key
  amqp_queue.bind(amqp_exchange, routing_key: routing_key)
end
amqp_connection() click to toggle source
# File lib/rabid_mq/listener.rb, line 61
def amqp_connection
  amqp_exchange.channel.connection
end
bind(exchange=amqp_exchange, routing_key: @routing_key, **options) click to toggle source
# File lib/rabid_mq/listener.rb, line 52
def bind(exchange=amqp_exchange, routing_key: @routing_key, **options)
  amqp_queue.bind(exchange, routing_key: routing_key, **options)
end
exchange(topic, include_environment_name: true, **options) click to toggle source

Use this as a macro in including classes like class MyClass

include RabidMQ::Listener
exchange 'exchange.name'

end

# File lib/rabid_mq/listener.rb, line 47
def exchange(topic, include_environment_name: true, **options)
  topic_name = include_environment_name ? name_with_env(topic) : topic
  @amqp_exchange = RabidMQ.topic_exchange topic_name, **options
end
queue_name(name, include_environment_name: true, **options) click to toggle source

Use this as a macro in including classes like class MyClass

include RabidMQ::Listener
queue_name 'some.queue_name', exclusive: true

end

# File lib/rabid_mq/listener.rb, line 36
def queue_name(name, include_environment_name: true, **options)
  resolved_name = include_environment_name ? name_with_env(name) : name
  @amqp_queue = RabidMQ.channel.queue(resolved_name, **options)
end