class PikaQ::Publisher

Attributes

channel[R]
exchange[R]
exchange_name[R]
exchange_options[R]
exchange_type[R]

Public Class Methods

new(channel, exchange_name, exchange_type = :default, exchange_options = { durable: false, auto_delete: false }) click to toggle source
# File lib/pika_q/publisher.rb, line 9
def initialize(channel, exchange_name, exchange_type = :default, exchange_options = { durable: false, auto_delete: false })
  @channel = channel
  @exchange_name = exchange_name
  @exchange_type = exchange_type
  @exchange_options = exchange_options
  @exchange = connect_to_exchange
end

Public Instance Methods

close_channel() click to toggle source
# File lib/pika_q/publisher.rb, line 24
def close_channel
  channel.close
end
send_message(payload, message_options = {}) click to toggle source
# File lib/pika_q/publisher.rb, line 17
def send_message(payload, message_options = {})
  message_options ||= {}
  message_options = default_message_options.merge(message_options)
  published = exchange.publish(payload, message_options)
  published
end

Private Instance Methods

connect_to_exchange() click to toggle source
# File lib/pika_q/publisher.rb, line 40
def connect_to_exchange
  if exchange_type == :default
    channel.default_exchange
  else
    ::Bunny::Exchange.new(channel, exchange_type, exchange_name, exchange_options)
  end
end
default_message_options() click to toggle source
# File lib/pika_q/publisher.rb, line 30
def default_message_options
  {
    content_type: 'application/json',
    message_id: SecureRandom.uuid,
    persistent: false,
    routing_key: nil,
    timestamp: DateTime.now.to_time.to_i
  }
end