module Rimless
class Configuration
include ActiveSupport::Configurable
config_accessor(:app_name) { Rimless.local_app_name }
config_accessor(:env) do
next(ENV.fetch('KAFKA_ENV', Rails.env).to_sym) if defined? Rails
ENV.fetch('KAFKA_ENV', 'development').to_sym
end
config_accessor(:client_id) do
ENV.fetch('KAFKA_CLIENT_ID', Rimless.local_app_name)
end
config_accessor(:logger) do
next(Rails.logger) if defined? Rails
Logger.new($stdout)
end
config_accessor(:kafka_brokers) do
ENV.fetch('KAFKA_BROKERS', 'kafka://message-bus.local:9092').split(',')
end
config_accessor(:avro_schema_path) do
path = %w[config avro_schemas]
next(Rails.root.join(*path)) if defined? Rails
Pathname.new(Dir.pwd).join(*path)
end
config_accessor(:compiled_avro_schema_path) do
path = %w[config avro_schemas compiled]
next(Rails.root.join(*path)) if defined? Rails
Pathname.new(Dir.pwd).join(*path)
end
config_accessor(:schema_registry_url) do
ENV.fetch('KAFKA_SCHEMA_REGISTRY_URL',
'http://schema-registry.message-bus.local')
end
config_accessor(:consumer_job_queue) do
ENV.fetch('KAFKA_SIDEKIQ_JOB_QUEUE', 'default').to_sym
end
def consumer_job_queue=(val)
config.consumer_job_queue = val.to_sym
Rimless::ConsumerJob.sidekiq_options(
queue: Rimless.configuration.consumer_job_queue
)
end
end
end