Module: Karafka

Defined in:
lib/karafka.rb,
lib/karafka/app.rb,
lib/karafka/cli.rb,
lib/karafka/env.rb,
lib/karafka/pro.rb,
lib/karafka/admin.rb,
lib/karafka/errors.rb,
lib/karafka/runner.rb,
lib/karafka/server.rb,
lib/karafka/status.rb,
lib/karafka/process.rb,
lib/karafka/railtie.rb,
lib/karafka/version.rb,
lib/karafka/cli/base.rb,
lib/karafka/cli/info.rb,
lib/karafka/embedded.rb,
lib/karafka/licenser.rb,
lib/karafka/contracts.rb,
lib/karafka/setup/dsl.rb,
lib/karafka/cli/server.rb,
lib/karafka/pro/loader.rb,
lib/karafka/cli/console.rb,
lib/karafka/cli/install.rb,
lib/karafka/setup/config.rb,
lib/karafka/base_consumer.rb,
lib/karafka/helpers/async.rb,
lib/karafka/messages/seek.rb,
lib/karafka/routing/proxy.rb,
lib/karafka/routing/topic.rb,
lib/karafka/contracts/base.rb,
lib/karafka/pro/encryption.rb,
lib/karafka/routing/router.rb,
lib/karafka/routing/topics.rb,
lib/karafka/contracts/topic.rb,
lib/karafka/messages/parser.rb,
lib/karafka/routing/builder.rb,
lib/karafka/contracts/config.rb,
lib/karafka/helpers/colorize.rb,
lib/karafka/messages/message.rb,
lib/karafka/connection/client.rb,
lib/karafka/messages/messages.rb,
lib/karafka/messages/metadata.rb,
lib/karafka/pro/base_consumer.rb,
lib/karafka/processing/result.rb,
lib/karafka/processing/worker.rb,
lib/karafka/time_trackers/base.rb,
lib/karafka/time_trackers/poll.rb,
lib/karafka/active_job/consumer.rb,
lib/karafka/connection/listener.rb,
lib/karafka/processing/executor.rb,
lib/karafka/time_trackers/pause.rb,
lib/karafka/processing/jobs/base.rb,
lib/karafka/processing/scheduler.rb,
lib/karafka/setup/attributes_map.rb,
lib/karafka/active_job/dispatcher.rb,
lib/karafka/pro/encryption/cipher.rb,
lib/karafka/pro/encryption/errors.rb,
lib/karafka/processing/jobs_queue.rb,
lib/karafka/routing/features/base.rb,
lib/karafka/instrumentation/logger.rb,
lib/karafka/processing/coordinator.rb,
lib/karafka/processing/partitioner.rb,
lib/karafka/routing/consumer_group.rb,
lib/karafka/helpers/multi_delegator.rb,
lib/karafka/instrumentation/monitor.rb,
lib/karafka/messages/batch_metadata.rb,
lib/karafka/pro/active_job/consumer.rb,
lib/karafka/pro/performance_tracker.rb,
lib/karafka/processing/jobs/consume.rb,
lib/karafka/processing/jobs/revoked.rb,
lib/karafka/processing/jobs_builder.rb,
lib/karafka/routing/consumer_mapper.rb,
lib/karafka/contracts/consumer_group.rb,
lib/karafka/patches/rdkafka/bindings.rb,
lib/karafka/patches/rdkafka/consumer.rb,
lib/karafka/pro/processing/scheduler.rb,
lib/karafka/processing/jobs/shutdown.rb,
lib/karafka/processing/workers_batch.rb,
lib/karafka/active_job/job_extensions.rb,
lib/karafka/connection/pauses_manager.rb,
lib/karafka/messages/builders/message.rb,
lib/karafka/pro/active_job/dispatcher.rb,
lib/karafka/pro/routing/features/base.rb,
lib/karafka/processing/strategies/dlq.rb,
lib/karafka/processing/strategies/mom.rb,
lib/karafka/connection/listeners_batch.rb,
lib/karafka/connection/messages_buffer.rb,
lib/karafka/messages/builders/messages.rb,
lib/karafka/pro/processing/coordinator.rb,
lib/karafka/pro/processing/partitioner.rb,
lib/karafka/processing/strategies/base.rb,
lib/karafka/routing/subscription_group.rb,
lib/karafka/pro/encryption/setup/config.rb,
lib/karafka/pro/processing/jobs_builder.rb,
lib/karafka/processing/executors_buffer.rb,
lib/karafka/routing/features/active_job.rb,
lib/karafka/connection/rebalance_manager.rb,
lib/karafka/contracts/server_cli_options.rb,
lib/karafka/pro/processing/strategies/vp.rb,
lib/karafka/processing/strategies/aj_mom.rb,
lib/karafka/processing/strategy_selector.rb,
lib/karafka/instrumentation/notifications.rb,
lib/karafka/pro/processing/strategies/dlq.rb,
lib/karafka/pro/processing/strategies/lrj.rb,
lib/karafka/pro/processing/strategies/mom.rb,
lib/karafka/processing/strategies/default.rb,
lib/karafka/processing/strategies/dlq_mom.rb,
lib/karafka/connection/raw_messages_buffer.rb,
lib/karafka/pro/encryption/messages/parser.rb,
lib/karafka/pro/processing/strategies/base.rb,
lib/karafka/processing/coordinators_buffer.rb,
lib/karafka/routing/features/base/expander.rb,
lib/karafka/active_job/job_options_contract.rb,
lib/karafka/instrumentation/callbacks/error.rb,
lib/karafka/instrumentation/logger_listener.rb,
lib/karafka/pro/encryption/contracts/config.rb,
lib/karafka/serialization/json/deserializer.rb,
lib/karafka/messages/builders/batch_metadata.rb,
lib/karafka/pro/processing/strategies/aj_mom.rb,
lib/karafka/pro/processing/strategies/lrj_vp.rb,
lib/karafka/pro/processing/strategy_selector.rb,
lib/karafka/processing/strategies/aj_dlq_mom.rb,
lib/karafka/pro/processing/strategies/default.rb,
lib/karafka/pro/processing/strategies/dlq_lrj.rb,
lib/karafka/pro/processing/strategies/dlq_mom.rb,
lib/karafka/pro/processing/strategies/lrj_mom.rb,
lib/karafka/routing/features/active_job/topic.rb,
lib/karafka/instrumentation/proctitle_listener.rb,
lib/karafka/pro/encryption/messages/middleware.rb,
lib/karafka/routing/features/active_job/config.rb,
lib/karafka/routing/features/dead_letter_queue.rb,
lib/karafka/pro/active_job/job_options_contract.rb,
lib/karafka/pro/processing/strategies/aj_mom_vp.rb,
lib/karafka/routing/features/active_job/builder.rb,
lib/karafka/routing/subscription_groups_builder.rb,
lib/karafka/instrumentation/callbacks/statistics.rb,
lib/karafka/pro/processing/strategies/aj_dlq_mom.rb,
lib/karafka/pro/processing/strategies/aj_lrj_mom.rb,
lib/karafka/routing/features/active_job/contract.rb,
lib/karafka/connection/consumer_group_coordinator.rb,
lib/karafka/pro/processing/strategies/dlq_lrj_mom.rb,
lib/karafka/pro/routing/features/long_running_job.rb,
lib/karafka/pro/routing/features/dead_letter_queue.rb,
lib/karafka/pro/processing/strategies/aj_lrj_mom_vp.rb,
lib/karafka/pro/routing/features/virtual_partitions.rb,
lib/karafka/instrumentation/vendors/datadog/listener.rb,
lib/karafka/pro/processing/jobs/consume_non_blocking.rb,
lib/karafka/pro/processing/jobs/revoked_non_blocking.rb,
lib/karafka/pro/processing/strategies/aj_dlq_lrj_mom.rb,
lib/karafka/routing/features/dead_letter_queue/topic.rb,
lib/karafka/routing/features/dead_letter_queue/config.rb,
lib/karafka/routing/features/manual_offset_management.rb,
lib/karafka/pro/routing/features/long_running_job/topic.rb,
lib/karafka/routing/features/dead_letter_queue/contract.rb,
lib/karafka/pro/routing/features/long_running_job/config.rb,
lib/karafka/pro/routing/features/virtual_partitions/topic.rb,
lib/karafka/pro/routing/features/long_running_job/contract.rb,
lib/karafka/pro/routing/features/virtual_partitions/config.rb,
lib/karafka/instrumentation/vendors/datadog/logger_listener.rb,
lib/karafka/pro/routing/features/dead_letter_queue/contract.rb,
lib/karafka/routing/features/manual_offset_management/topic.rb,
lib/karafka/pro/routing/features/virtual_partitions/contract.rb,
lib/karafka/routing/features/manual_offset_management/config.rb,
lib/karafka/routing/features/manual_offset_management/contract.rb

Overview

This Karafka component is a Pro component under a commercial license. This Karafka component is NOT licensed under LGPL.

All of the commercial components are present in the lib/karafka/pro directory of this repository and their usage requires commercial license agreement.

Karafka has also commercial-friendly license, commercial support and commercial components.

By sending a pull request to the pro components, you are agreeing to transfer the copyright of your code to Maciej Mensfeld.

Defined Under Namespace

Modules: ActiveJob, Admin, Connection, Contracts, Embedded, Errors, Helpers, Instrumentation, Messages, Patches, Pro, Processing, Routing, Serialization, Setup, TimeTrackers Classes: App, BaseConsumer, Cli, Env, Licenser, Process, Railtie, Runner, Server, Status

Constant Summary collapse

VERSION =

Current Karafka version

'2.0.27'

Class Method Summary collapse

Class Method Details

.boot_fileString

Note:

By default it is a file called 'karafka.rb' but it can be specified as you wish if you have Karafka that is merged into a Sinatra/Rails app and karafka.rb is taken. It will be used for console/consumers/etc

Returns path to a default file that contains booting procedure etc.

Examples:

Standard only-Karafka case

Karafka.boot_file #=> '/home/app_path/karafka.rb'

Non standard case

KARAFKA_BOOT_FILE='/home/app_path/app.rb'
Karafka.boot_file #=> '/home/app_path/app.rb'

Returns:

  • (String)

    path to a default file that contains booting procedure etc


82
83
84
# File 'lib/karafka.rb', line 82

def boot_file
  Pathname.new(ENV['KARAFKA_BOOT_FILE'] || File.join(Karafka.root, 'karafka.rb'))
end

.core_rootString

Returns path to Karafka gem root core.

Returns:

  • (String)

    path to Karafka gem root core


64
65
66
# File 'lib/karafka.rb', line 64

def core_root
  Pathname.new(File.expand_path('karafka', __dir__))
end

.envKarafka::Env

Returns env instance that allows us to check environment.

Returns:

  • (Karafka::Env)

    env instance that allows us to check environment


26
27
28
# File 'lib/karafka.rb', line 26

def env
  @env ||= Env.new
end

.env=(environment) ⇒ Karafka::Env

Returns env instance.

Examples:

Assign new environment to Karafka::App

Karafka::App.env = :production

Parameters:

  • environment (String, Symbol)

    new environment that we want to set

Returns:


34
35
36
# File 'lib/karafka.rb', line 34

def env=(environment)
  env.replace(environment.to_s)
end

.gem_rootString

Returns root path of this gem.

Returns:

  • (String)

    root path of this gem


54
55
56
# File 'lib/karafka.rb', line 54

def gem_root
  Pathname.new(File.expand_path('..', __dir__))
end

.loggerLogger

Returns logger that we want to use. Will use ::Karafka::Logger by default.

Returns:

  • (Logger)

    logger that we want to use. Will use ::Karafka::Logger by default


39
40
41
# File 'lib/karafka.rb', line 39

def logger
  @logger ||= App.config.logger
end

.monitor::Karafka::Monitor

Returns monitor that we want to use.

Returns:

  • (::Karafka::Monitor)

    monitor that we want to use


49
50
51
# File 'lib/karafka.rb', line 49

def monitor
  @monitor ||= App.config.monitor
end

.pro?Boolean

Returns true if there is a valid pro token present.

Returns:

  • (Boolean)

    true if there is a valid pro token present


69
70
71
# File 'lib/karafka.rb', line 69

def pro?
  App.config.license.token != false
end

.producerWaterDrop::Producer

Returns waterdrop messages producer.

Returns:

  • (WaterDrop::Producer)

    waterdrop messages producer


44
45
46
# File 'lib/karafka.rb', line 44

def producer
  @producer ||= App.config.producer
end

.rootString

Returns Karafka app root path (user application path).

Returns:

  • (String)

    Karafka app root path (user application path)


59
60
61
# File 'lib/karafka.rb', line 59

def root
  Pathname.new(ENV['KARAFKA_ROOT_DIR'] || File.dirname(ENV['BUNDLE_GEMFILE']))
end