Sha256: c71782ca7cdbc7093aef92689f4187b2e659f6a754daa58062521be9c38843d8
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
# frozen_string_literal: true module RubyRabbitmqJanus module Rabbit module Publisher # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv> # This publisher don't post message. Is listen just an standard queue to Janus. # By default is "from-janus". It's a parameter in config to this gem. class Listener < BasePublisher # Define an publisher def initialize(rabbit) super() @response = nil @count = 1 @rabbit = rabbit.channel @reply = @rabbit.queue(Tools::Config.instance.options['queues']['queue_from']) Tools::Log.instance.debug "Waiting message from queue : #{@reply.name}" end # Listen a queue and return a body response def listen_events @reply.subscribe do |_info_delivery, _propertie, payload| synchronize_response(payload) end end # Execute an action for each response received in queue def event_received loop do return_response yield @response.event, @response.data, @response.jsep end end private # Sending an signal when an response is reading in queue def synchronize_response(payload) @response = Janus::Response.new(JSON.parse(payload)) Tools::Log.instance.info \ "[X] Message number reading : #{@count} --\n\r" \ "#{@response.to_hash}" @count += 1 lock.synchronize { condition.signal } end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ruby_rabbitmq_janus-1.0.5 | lib/rrj/rabbit/publish/listener.rb |
ruby_rabbitmq_janus-1.0.4 | lib/rrj/rabbit/publish/listener.rb |