Sha256: e107d8a4922175615a36bdc7a12c31127e9dc2ae84cadf26ba0ab56e2c401d32

Contents?: true

Size: 1.5 KB

Versions: 16

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

module RubyRabbitmqJanus
  module Rabbit
    module Publisher
      # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
      # This publisher send and read an message in queues
      class Publisher < BasePublisher
        # Intialize a publisher for sending and reading a message
        def initialize(exchange)
          super()
          @exchange = exchange.default_exchange
          @message = nil
          Tools::Log.instance.info "Create/Connect to queue -- #{reply.name}"
        end

        # Publish an message in queue
        def send_a_message(request)
          Tools::Log.instance.info "Send request type : #{request.type}"
          @message = request
          @exchange.publish(@message.to_json,
                            request.options.merge!(reply_to: queue_name))
        end

        private

        # Subscribe to queue selectd with a message
        def subscribe_to_queue
          reply.subscribe do |_delivery_info, propertie, payload|
            if @message.correlation.eql?(propertie.correlation_id)
              @response = JSON.parse payload
              lock.synchronize { condition.signal }
            end
          end
        end

        # Name to queue used for this publisher
        # @return [String] Name to queue used
        def queue_name
          reply.name
        end

        attr_accessor :message
      end
    end
  end
end

require 'rrj/rabbit/publish/admin'
require 'rrj/rabbit/publish/exclusive'
require 'rrj/rabbit/publish/non_exclusive'

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-1.2.0 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.12 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.11 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.10 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.9 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.8 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.7 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.6 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.5 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.4 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.3 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.2 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.1 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.1.0 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.0.8 lib/rrj/rabbit/publish/publisher.rb
ruby_rabbitmq_janus-1.0.7 lib/rrj/rabbit/publish/publisher.rb