Sha256: 524c00c1dfc35b1ee09f971a96f0d731b6b9fa59dc2f34fd2e4ec3e05033ee6a
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
require "harmoniser/channelable" require "harmoniser/definition" module Harmoniser module Publisher class MissingExchangeDefinition < StandardError; end include Channelable module ClassMethods def harmoniser_publisher(exchange_name:) @harmoniser_exchange_definition = Definition::Exchange.new( name: exchange_name, type: nil, opts: {passive: true} ) end def publish(payload, opts = {}) raise_missing_exchange_definition unless @harmoniser_exchange_definition const_get(:HARMONISER_PUBLISHER_MUTEX).synchronize do harmoniser_exchange.publish(payload, opts) end Harmoniser.logger.debug { "Message published: payload = `#{payload}`, opts = `#{opts}`" } harmoniser_exchange end private def harmoniser_exchange @harmoniser_exchange ||= Bunny::Exchange.new( Publisher.create_channel, @harmoniser_exchange_definition.type, @harmoniser_exchange_definition.name, @harmoniser_exchange_definition.opts ) end def raise_missing_exchange_definition raise MissingExchangeDefinition, "Please, call harmoniser_publisher class method first with the exchange_name that will be used for publications" end end class << self def included(base) base.const_set(:HARMONISER_PUBLISHER_MUTEX, Mutex.new) base.extend(ClassMethods) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
harmoniser-0.6.0 | lib/harmoniser/publisher.rb |