Sha256: a42ca1139aa6bdccff9deb7a24e5ba326d3bcef5ee35cceb59bd32060d2f89ab

Contents?: true

Size: 1.96 KB

Versions: 10

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

module RubyRabbitmqJanus
  module Rabbit
    # @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
    # Class for manage connection with rabbitmq
    class Connect
      # Initialize connection to server RabbitMQ
      def initialize
        Tools::Log.instance.debug 'Initialize connection with RabbitMQ'
        @rabbit = Bunny.new(read_options_server)
      end

      # Create an transaction with rabbitmq and close after response is received
      def transaction_short
        response = transaction_long { yield }
        close
        response
      end

      # Create an transaction with rabbitmq and not close
      def transaction_long
        start
        yield
      end

      # Openning a connection with Rabbitmq
      def start
        Tools::Log.instance.debug 'Connection to rabbitmq START'
        @rabbit.start
      rescue => message
        raise Errors::ConnectionRabbitmqFailed, message
      end

      # Close connection to server RabbitMQ
      def close
        Tools::Log.instance.debug 'Connection to rabbitmq STOP'
        @rabbit.close
      rescue
        raise Bunny::ConnectionClosedError
      end

      # Create an channel
      def channel
        Tools::Log.instance.debug 'Create an channel'
        @rabbit.create_channel
      end

      private

      # Read option for bunny instance (connection with rabbitmq)
      # :reek:FeatureEnvy
      def read_options_server
        cfg = Tools::Config.instance.options['rabbit']
        opts = {}
        %w(host port pass user vhost).each do |val|
          opts.merge!(val.to_sym => Tools::Env.instance.test_env_var(cfg, val))
        end
        opts.merge!(option_log_rabbit)
      end

      # Define option logs for bunny
      def option_log_rabbit
        if Tools::Log.instance.level.zero?
          {
            log_level: Tools::Log.instance.level,
            log_file: Tools::Log.instance.logdev
          }
        else
          {}
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ruby_rabbitmq_janus-1.1.1 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.1.0 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.8 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.7 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.6 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.5 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.4 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.3 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.2 lib/rrj/rabbit/connect.rb
ruby_rabbitmq_janus-1.0.1 lib/rrj/rabbit/connect.rb