class Columbo::Client::AMQP

Public Class Methods

new(connection_uri) click to toggle source
# File lib/columbo/clients/amqp.rb, line 6
def initialize(connection_uri)
  @connection_uri = connection_uri
end

Public Instance Methods

exchange(name) { |exchange_options| ... } click to toggle source
# File lib/columbo/clients/amqp.rb, line 24
def exchange(name)
  raise ArgumentError, 'Please provide a name for the AMQP exchange' if name.nil?

  @channel = connection.create_channel

  if block_given?
    exchange_options = OpenStruct.new(arguments: {})
    yield exchange_options

    type = exchange_options.delete_field(:type)
    @exchange = @channel.send(type, name, exchange_options.to_h)
  else
    raise ArgumentError, 'Please provide a block to configure the exchange'
  end
end
publish(event, options = {}) click to toggle source
# File lib/columbo/clients/amqp.rb, line 10
def publish(event, options = {})
  begin
    publish_event(event, options)
    true
  rescue Exception => e
    Columbo.logger.warn(e.message)
    false
  end
end
publish!(event, options = {}) click to toggle source
# File lib/columbo/clients/amqp.rb, line 20
def publish!(event, options = {})
  publish_event(event, options)
end

Private Instance Methods

connection() click to toggle source
# File lib/columbo/clients/amqp.rb, line 48
def connection
  @connection ||= Bunny.new(@connection_uri).start
end
publish_event(event, options = {}) click to toggle source
# File lib/columbo/clients/amqp.rb, line 42
def publish_event(event, options = {})
  raise 'No exchange has been configurated for the Columbo Client' if @exchange.nil?

  @exchange.publish(event.to_json, options)
end