Sha256: d40f12248a4fc3ee40ab9d10ab3759b785bf7656901cbce2382029b5f39caec2

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

require 'vx/lib/rack/builder'

module Vx
  module Lib
    module Consumer
      class Configuration

        DEBUG = 'VX_CONSUMER_DEBUG'.freeze


        attr_accessor :default_exchange_options, :default_queue_options,
          :default_publish_options, :default_exchange_type, :pool_timeout,
          :heartbeat, :spawn_attempts, :content_type, :instrumenter, :debug,
          :on_error, :builders, :prefetch

        def initialize
          reset!
        end

        def debug?
          @debug ||= ENV[DEBUG]
        end

        def use(target, middleware, *args)
          @builders[target].use middleware, *args
        end

        def on_error(&block)
          @on_error = block if block
          @on_error
        end

        def reset!
          @default_exchange_type = :topic
          @pool_timeout          = 0.5
          @heartbeat             = :server

          @spawn_attempts        = 1

          @content_type          = 'application/json'
          @prefetch              = 1

          @instrumenter          = nil
          @on_error              = ->(e, env){ nil }

          @builders = {
            pub: Vx::Lib::Rack::Builder.new,
            sub: Vx::Lib::Rack::Builder.new
          }

          @default_exchange_options = {
            durable:     true,
            auto_delete: false
          }

          @default_queue_options = {
            durable:      true,
            auto_delete:  false,
            exclusive:    false
          }

          @default_publish_options = {
          }
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vx-lib-consumer-0.2.2 lib/vx/lib/consumer/configuration.rb