Sha256: 3156a6b5c2081e0d05a34692cef65ca8a18cbb6c2251908161cb8b3aea254fd9

Contents?: true

Size: 1.26 KB

Versions: 2

Compression:

Stored size: 1.26 KB

Contents

require "sneakers"
require "sneakers_packer/version"
require "sneakers_packer/configuration"
require "sneakers_packer/message_packer"
require "sneakers_packer/common_worker"
require "sneakers_packer/rpc_worker"
require "sneakers_packer/rpc_client"

module SneakersPacker
  class RemoteCallTimeoutError < StandardError; end

  # sender message to sneaker exchange
  # @param name route_key for message
  # @param data
  def self.publish(name, data)
    message = message_packer.pack_request(data)

    publisher.publish message, to_queue: name
  end

  # call remote service via rabbitmq rpc
  # @param name route_key for service
  # @param data
  # @param options{timeout} [int] timeout. seconds.   optional
  # @return result of service
  # @raise RemoteCallTimeoutError if timeout
  #
  def self.remote_call(name, data, options = {})
    @client ||= RpcClient.new(publisher)
    message = message_packer.pack_request(data)
    response = @client.call name, message, options
    response_data, from, status = message_packer.unpack_response(response)
    response_data
  end

  def self.publisher
    @publisher ||= ::Sneakers::Publisher.new
  end

  # message_packer is a singleton object
  def self.message_packer
    @message_packer ||= MessagePacker.new(self.conf.app_name)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sneakers_packer-0.1.4 lib/sneakers_packer.rb
sneakers_packer-0.1.3 lib/sneakers_packer.rb