Sha256: 55fd43327236eb9722d17d7ccf826c2439a054f7e010c865c0496767b4279ab9

Contents?: true

Size: 840 Bytes

Versions: 1

Compression:

Stored size: 840 Bytes

Contents

class Skein::Client::Subscriber < Skein::Connected
  # == Instance Methods =====================================================

  def initialize(queue_name, routing_key = nil, connection: nil, context: nil)
    super(connection: connection, context: context)

    @queue = self.channel.topic(queue_name)
    @subscribe_queue = self.channel.queue('', exclusive: true)

    @subscribe_queue.bind(@queue, routing_key: routing_key)
  end

  def listen
    case (@subscribe_queue.class.to_s.split(/::/)[0])
    when 'Bunny'
      @subscribe_queue.subscribe(block: true) do |delivery_info, properties, payload|
        yield(JSON.load(payload), delivery_info, properties)
      end
    when 'MarchHare'
      @subscribe_queue.subscribe(block: true) do |metadata, payload|
        yield(JSON.load(payload), metadata)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
skein-0.3.0 lib/skein/client/subscriber.rb