Sha256: 3df264beba7720869da9017cc5227cdbbc21d31654eb6e40c6fd94adba89e885

Contents?: true

Size: 1.24 KB

Versions: 11

Compression:

Stored size: 1.24 KB

Contents

require 'march_hare'

class Freddy
  module Adapters
    class MarchHareAdapter
      def self.connect(config)
        hare = MarchHare.connect(config)
        new(hare)
      end

      def initialize(hare)
        @hare = hare
      end

      def create_channel
        Channel.new(@hare.create_channel)
      end

      def close
        @hare.close
      end

      class Channel
        extend Forwardable

        NO_ROUTE = 312

        def initialize(channel)
          @channel = channel
        end

        def_delegators :@channel, :topic, :default_exchange, :consumers

        def queue(*args)
          Queue.new(@channel.queue(*args))
        end

        def on_no_route(&block)
          @channel.on_return do |reply_code, _, exchange_name, _, properties|
            if exchange_name != Freddy::FREDDY_TOPIC_EXCHANGE_NAME && reply_code == NO_ROUTE
              block.call(properties.correlation_id)
            end
          end
        end
      end

      class Queue < Shared::Queue
        def subscribe(&block)
          @queue.subscribe do |meta, payload|
            parsed_payload = Payload.parse(payload)
            block.call(Delivery.new(parsed_payload, meta, meta.routing_key))
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
freddy-0.7.0 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.6.3 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.6.2 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.6.1 lib/freddy/adapters/march_hare_adapter.rb
freddy-jruby-0.6.0 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.6.0 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.5.8 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.5.7 lib/freddy/adapters/march_hare_adapter.rb
freddy-jruby-0.5.6 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.5.6 lib/freddy/adapters/march_hare_adapter.rb
freddy-0.5.5 lib/freddy/adapters/march_hare_adapter.rb