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