class ActiveMessage::Broker

Attributes

configuration[RW]
connection[RW]
exchange[RW]

Public Class Methods

new() click to toggle source
# File lib/active_message/broker.rb, line 7
def initialize
end

Public Instance Methods

ack(channel, delivery_tag) click to toggle source
# File lib/active_message/broker.rb, line 29
def ack(channel, delivery_tag)
  channel.ack(delivery_tag, false)
end
connect(config) click to toggle source
# File lib/active_message/broker.rb, line 10
def connect(config)
  @configuration  = config
  @connection     = Bunny.new(host: ActiveMessage::Configuration.get(:host), auth_mechanism: "EXTERNAL", tls: ActiveMessage::Configuration.get(:tls), tls_cert: ActiveMessage::Configuration.get(:tls_cert), tls_key: ActiveMessage::Configuration.get(:tls_key), tls_ca_certificates: ActiveMessage::Configuration.get(:tls_ca_certificates))
  @connection.start
  @exchange       = @connection.topic(@configuration[:exchange] || "demo", auto_delete: true)
end
disconnect() click to toggle source
# File lib/active_message/broker.rb, line 17
def disconnect
  self.connection.close
end
generate_id() click to toggle source
# File lib/active_message/broker.rb, line 48
def generate_id
  SecureRandom.uuid
end
nack(channel, delivery_tag) click to toggle source
# File lib/active_message/broker.rb, line 33
def nack(channel, delivery_tag)
  channel.nack(delivery_tag, false, false)
end
publish(routing_key, message, properties = {}) click to toggle source
# File lib/active_message/broker.rb, line 37
def publish(routing_key, message, properties = {})
  ActiveMessage::Logger.debug "Publishing Message => '#{message.inspect}' to #{routing_key}"
  non_overridable_properties = {
    routing_key: routing_key,
    timestamp: Time.now.to_i,
    content_type: 'application/json'
  }
  properties[:message_id] ||= generate_id
  exchange.publish(message, { persistent: true }.merge(properties).merge(non_overridable_properties))
end