module GrapeApe::Dispatcher
Public Instance Methods
rpc(env, queue_name, message = {})
click to toggle source
# File lib/grape_ape/dispatcher.rb, line 3 def rpc(env, queue_name, message = {}) f = Fiber.current response = nil env['subscription'] = env.grape_amqp_em_channel.subscribe do |msg| if msg[:meta].correlation_id == env['correlation_id'] response = msg[:data] f.resume end end env['correlation_id'] = SecureRandom.uuid env.grape_amqp_exchange.publish(message.to_json, routing_key: queue_name, reply_to: env.grape_amqp_response_queue, correlation_id: env['correlation_id']) Fiber.yield JSON.parse(response) end