Sha256: d6fbbdb3a2235d09ef5f5013f7e4be5ffdd2438eb69cb49acea9ed82bfebb15d

Contents?: true

Size: 784 Bytes

Versions: 2

Compression:

Stored size: 784 Bytes

Contents

# frozen_string_literal: true

require 'forwardable'
require 'bunny'

module CottonTail
  module Queue
    # Wrapper for Bunny::Session
    class Connection
      extend Forwardable

      def initialize(url = ENV.fetch('AMQP_ADDRESS', 'amqp://localhost:5672'))
        @url = url
      end

      def chan(prefetch = 1)
        @channels ||= Hash.new do |h, key|
          h[key] = session.create_channel.tap do |ch|
            ch.prefetch(prefetch)
          end
        end
        @channels[prefetch]
      end

      def exchange
        @exchange ||= chan.exchange('amq.topic')
      end

      def session
        @session ||= ::Bunny.new(@url).tap(&:start)
      end

      def_delegators :chan, :ack, :nack, :queue
      def_delegators :exchange, :publish
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cotton-tail-0.1.2 lib/cotton_tail/queue/connection.rb
cotton-tail-0.1.1 lib/cotton_tail/queue/connection.rb