Sha256: bf38edad14e30f6be35ba5c0c015c277b1064181a631311e9d43a40865272358

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

require 'bunny'

module RubyRabbitmqJanus
  # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
  # Class for connection with RabbitMQ Server
  class RabbitMQ
    # Return a new instance to RabbitMQ
    # @param configuration [RRJ::Config] Configuration file to gem
    # @param requests [Hash] Request sending to RabbitMQ
    # @param logs [RRJ::Log] Log to gem
    def initialize(configuration, requests, logs)
      @settings = configuration
      @logs = logs
      @requests = requests
      @connection = Bunny.new(read_options_server)
      @response = nil
      @janus = nil
    end

    # Connect to server RabbitMQ and post a message in queue ('to-janus' by default)
    def ask_request(request_type, opts)
      execute_request do
        @response = @janus.send(@requests[request_type.to_s], opts)
        close_server_rabbitmq
      end
    end

    # Connect to server RabbitMQ and read a message in queue ('from-janus' by default)
    def ask_response(info_request)
      execute_request do
        @response = @janus.read(info_request, @connection)
      end
    end

    private

    # Establish connection with RabbitMQ server
    # @return [RRJ::Janus] Janus object for manipulating data sending and receiving to
    #   rabbitmq server
    def open_server_rabbitmq
      @connection.start
    end

    # Close connection to rabbitmq server
    def close_server_rabbitmq
      @connection.close
    end

    # Use configuration information to connect RabbitMQ
    def read_options_server
      hash = {}
      @settings.options.fetch('server').each do |key, server|
        hash.merge!(key.to_sym => server.to_s)
      end
      hash
    end

    # Execute request
    def execute_request
      open_server_rabbitmq
      @janus = Janus.new(@connection, @settings.options, @logs)
      yield
      @response
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-0.1.1 lib/rrj/rabbitmq/rabbitmq.rb