Class: Karafka::Pro::Loader
- Inherits:
-
Object
- Object
- Karafka::Pro::Loader
- Defined in:
- lib/karafka/pro/loader.rb
Overview
Loader requires and loads all the pro components only when they are needed
Constant Summary collapse
- FORCE_LOADED =
There seems to be a conflict in between using two Zeitwerk instances and it makes lookups for nested namespaces instead of creating them. We require those not to deal with this and then all works as expected
%w[ active_job/dispatcher processing/jobs/consume_non_blocking processing/strategies/base routing/features/base encryption encryption/cipher encryption/setup/config encryption/contracts/config encryption/messages/parser cli/topics ].freeze
Class Method Summary collapse
-
.post_fork(config, pre_fork_producer) ⇒ Object
Runs operations needed after fork in swarm for features that need it.
-
.post_setup_all(config) ⇒ Object
Runs post setup features configuration operations.
-
.pre_setup_all(config) ⇒ Object
Loads all the pro components and configures them wherever it is expected.
-
.require_all ⇒ Object
Requires all the components without using them anywhere.
Class Method Details
.post_fork(config, pre_fork_producer) ⇒ Object
Runs operations needed after fork in swarm for features that need it
86 87 88 |
# File 'lib/karafka/pro/loader.rb', line 86 def post_fork(config, pre_fork_producer) features.each { |feature| feature.post_fork(config, pre_fork_producer) } end |
.post_setup_all(config) ⇒ Object
Runs post setup features configuration operations
74 75 76 77 78 79 |
# File 'lib/karafka/pro/loader.rb', line 74 def post_setup_all(config) features.each { |feature| feature.post_setup(config) } # We initialize it here so we don't initialize it during multi-threading work Processing::SubscriptionGroupsCoordinator.instance end |
.pre_setup_all(config) ⇒ Object
Loads all the pro components and configures them wherever it is expected
62 63 64 65 66 67 68 69 |
# File 'lib/karafka/pro/loader.rb', line 62 def pre_setup_all(config) features.each { |feature| feature.pre_setup(config) } reconfigure(config) load_topic_features end |
.require_all ⇒ Object
Requires all the components without using them anywhere
51 52 53 54 55 56 57 |
# File 'lib/karafka/pro/loader.rb', line 51 def require_all FORCE_LOADED.each { |file| require_relative(file) } PRO_LOADER.push_dir(Karafka.core_root.join("pro"), namespace: Karafka::Pro) PRO_LOADER.setup PRO_LOADER.eager_load end |