Sha256: 18dbdd3010d1b72fc5e1ed9a970bff9ad8b7b98d6cf281c89da62b63c311c5f8

Contents?: true

Size: 742 Bytes

Versions: 7

Compression:

Stored size: 742 Bytes

Contents

require 'mercury/mercury'
require 'bunny'

class Mercury
  class Sync
    class << self
      def publish(source_name, msg, tag: '', amqp_opts: {}, wait_for_publisher_confirms: true)
        conn = Bunny.new(amqp_opts)
        conn.start
        ch = conn.create_channel

        ch.confirm_select if wait_for_publisher_confirms # see http://rubybunny.info/articles/extensions.html and Mercury#enable_publisher_confirms
        ex = ch.topic(source_name, Mercury.source_opts)
        ex.publish(WireSerializer.new.write(msg), **Mercury.publish_opts(tag, {}))
        if wait_for_publisher_confirms
          ch.wait_for_confirms or raise 'failed to confirm publication'
        end
      ensure
        conn.close
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
mercury_amqp-0.7.0 lib/mercury/sync.rb
mercury_amqp-0.6.1 lib/mercury/sync.rb
mercury_amqp-0.6.0 lib/mercury/sync.rb
mercury_amqp-0.5.0 lib/mercury/sync.rb
mercury_amqp-0.4.0 lib/mercury/sync.rb
mercury_amqp-0.3.0 lib/mercury/sync.rb
mercury_amqp-0.2.0 lib/mercury/sync.rb