class Burrow::Client

Attributes

connection[R]
request[R]

Public Class Methods

new(queue) click to toggle source
# File lib/burrow/client.rb, line 5
def initialize(queue)
  @connection = Burrow::Connection.new(queue)
end

Public Instance Methods

publish(method, params={}) click to toggle source
# File lib/burrow/client.rb, line 9
def publish(method, params={})
  @request = Burrow::Request.new(method, params)
  publish_request
  subscribe_response
end

Protected Instance Methods

publish_request() click to toggle source
# File lib/burrow/client.rb, line 17
def publish_request
  connection.exchange.publish(
    request.json, {
      correlation_id: request.id,
      reply_to:       connection.return_queue.name,
      routing_key:    connection.queue.name
    }
  )
end
subscribe_response() click to toggle source
# File lib/burrow/client.rb, line 27
def subscribe_response
  response = nil
  connection.return_queue.subscribe(block: true) do |delivery_info, properties, payload|
    if properties[:correlation_id] == request.id
      response = payload
      delivery_info.consumer.cancel
    end
  end
  JSON.parse(response)
end