karafka 2.5.4 → 2.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/LICENSE-COMM +8 -2
- data/README.md +2 -2
- data/certs/expired.txt +2 -0
- data/karafka.gemspec +23 -23
- data/lib/active_job/karafka.rb +2 -2
- data/lib/active_job/queue_adapters/karafka_adapter.rb +5 -5
- data/lib/karafka/active_job/consumer.rb +3 -3
- data/lib/karafka/active_job/current_attributes.rb +4 -4
- data/lib/karafka/active_job/job_options_contract.rb +2 -2
- data/lib/karafka/admin/acl.rb +128 -81
- data/lib/karafka/admin/configs/resource.rb +1 -1
- data/lib/karafka/admin/configs.rb +84 -70
- data/lib/karafka/admin/consumer_groups.rb +377 -330
- data/lib/karafka/admin/contracts/replication.rb +2 -2
- data/lib/karafka/admin/replication.rb +304 -280
- data/lib/karafka/admin/topics.rb +232 -186
- data/lib/karafka/admin.rb +276 -117
- data/lib/karafka/app.rb +3 -3
- data/lib/karafka/base_consumer.rb +34 -30
- data/lib/karafka/cli/base.rb +8 -8
- data/lib/karafka/cli/console.rb +1 -1
- data/lib/karafka/cli/contracts/server.rb +12 -12
- data/lib/karafka/cli/help.rb +2 -2
- data/lib/karafka/cli/info.rb +4 -4
- data/lib/karafka/cli/install.rb +11 -11
- data/lib/karafka/cli/server.rb +6 -6
- data/lib/karafka/cli/swarm.rb +1 -1
- data/lib/karafka/cli/topics/align.rb +4 -4
- data/lib/karafka/cli/topics/base.rb +5 -5
- data/lib/karafka/cli/topics/create.rb +2 -2
- data/lib/karafka/cli/topics/delete.rb +2 -2
- data/lib/karafka/cli/topics/help.rb +5 -1
- data/lib/karafka/cli/topics/plan.rb +16 -16
- data/lib/karafka/cli/topics/repartition.rb +3 -3
- data/lib/karafka/cli/topics.rb +22 -22
- data/lib/karafka/cli.rb +2 -2
- data/lib/karafka/connection/client.rb +17 -17
- data/lib/karafka/connection/listener.rb +6 -6
- data/lib/karafka/connection/mode.rb +1 -1
- data/lib/karafka/connection/proxy.rb +1 -1
- data/lib/karafka/connection/status.rb +2 -2
- data/lib/karafka/constraints.rb +3 -3
- data/lib/karafka/embedded.rb +3 -3
- data/lib/karafka/env.rb +4 -4
- data/lib/karafka/errors.rb +3 -0
- data/lib/karafka/execution_mode.rb +1 -1
- data/lib/karafka/helpers/config_importer.rb +2 -2
- data/lib/karafka/helpers/multi_delegator.rb +1 -1
- data/lib/karafka/instrumentation/assignments_tracker.rb +9 -9
- data/lib/karafka/instrumentation/callbacks/error.rb +5 -5
- data/lib/karafka/instrumentation/callbacks/oauthbearer_token_refresh.rb +4 -4
- data/lib/karafka/instrumentation/callbacks/rebalance.rb +6 -6
- data/lib/karafka/instrumentation/callbacks/statistics.rb +5 -5
- data/lib/karafka/instrumentation/logger.rb +7 -7
- data/lib/karafka/instrumentation/logger_listener.rb +53 -53
- data/lib/karafka/instrumentation/vendors/appsignal/base.rb +1 -1
- data/lib/karafka/instrumentation/vendors/appsignal/client.rb +1 -1
- data/lib/karafka/instrumentation/vendors/appsignal/errors_listener.rb +1 -1
- data/lib/karafka/instrumentation/vendors/appsignal/metrics_listener.rb +36 -36
- data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +28 -28
- data/lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb +38 -38
- data/lib/karafka/instrumentation/vendors/kubernetes/base_listener.rb +5 -5
- data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +1 -1
- data/lib/karafka/instrumentation/vendors/kubernetes/swarm_liveness_listener.rb +1 -1
- data/lib/karafka/licenser.rb +115 -8
- data/lib/karafka/messages/messages.rb +1 -1
- data/lib/karafka/patches/rdkafka/bindings.rb +2 -2
- data/lib/karafka/pro/active_job/consumer.rb +19 -2
- data/lib/karafka/pro/active_job/dispatcher.rb +19 -2
- data/lib/karafka/pro/active_job/job_options_contract.rb +21 -4
- data/lib/karafka/pro/base_consumer.rb +19 -2
- data/lib/karafka/pro/cleaner/errors.rb +19 -2
- data/lib/karafka/pro/cleaner/messages/message.rb +19 -2
- data/lib/karafka/pro/cleaner/messages/messages.rb +29 -2
- data/lib/karafka/pro/cleaner/messages/metadata.rb +19 -2
- data/lib/karafka/pro/cleaner.rb +19 -2
- data/lib/karafka/pro/cli/contracts/server.rb +31 -14
- data/lib/karafka/pro/cli/parallel_segments/base.rb +23 -6
- data/lib/karafka/pro/cli/parallel_segments/collapse.rb +24 -7
- data/lib/karafka/pro/cli/parallel_segments/distribute.rb +22 -5
- data/lib/karafka/pro/cli/parallel_segments.rb +26 -9
- data/lib/karafka/pro/cli/topics/health.rb +162 -0
- data/lib/karafka/pro/cli/topics.rb +52 -0
- data/lib/karafka/pro/connection/manager.rb +33 -16
- data/lib/karafka/pro/connection/multiplexing/listener.rb +19 -2
- data/lib/karafka/pro/contracts/base.rb +19 -2
- data/lib/karafka/pro/encryption/cipher.rb +19 -2
- data/lib/karafka/pro/encryption/contracts/config.rb +21 -4
- data/lib/karafka/pro/encryption/errors.rb +19 -2
- data/lib/karafka/pro/encryption/messages/middleware.rb +21 -4
- data/lib/karafka/pro/encryption/messages/parser.rb +21 -4
- data/lib/karafka/pro/encryption/setup/config.rb +21 -4
- data/lib/karafka/pro/encryption.rb +19 -2
- data/lib/karafka/pro/instrumentation/performance_tracker.rb +19 -2
- data/lib/karafka/pro/iterator/expander.rb +19 -2
- data/lib/karafka/pro/iterator/tpl_builder.rb +21 -4
- data/lib/karafka/pro/iterator.rb +20 -3
- data/lib/karafka/pro/loader.rb +21 -3
- data/lib/karafka/pro/processing/adaptive_iterator/consumer.rb +20 -3
- data/lib/karafka/pro/processing/adaptive_iterator/tracker.rb +19 -2
- data/lib/karafka/pro/processing/collapser.rb +19 -2
- data/lib/karafka/pro/processing/coordinator.rb +19 -2
- data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +19 -2
- data/lib/karafka/pro/processing/coordinators/filters_applier.rb +19 -2
- data/lib/karafka/pro/processing/coordinators/virtual_offset_manager.rb +26 -9
- data/lib/karafka/pro/processing/executor.rb +19 -2
- data/lib/karafka/pro/processing/expansions_selector.rb +19 -2
- data/lib/karafka/pro/processing/filters/base.rb +20 -3
- data/lib/karafka/pro/processing/filters/delayer.rb +21 -4
- data/lib/karafka/pro/processing/filters/expirer.rb +19 -2
- data/lib/karafka/pro/processing/filters/inline_insights_delayer.rb +20 -3
- data/lib/karafka/pro/processing/filters/throttler.rb +19 -2
- data/lib/karafka/pro/processing/filters/virtual_limiter.rb +19 -2
- data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +19 -2
- data/lib/karafka/pro/processing/jobs/eofed_non_blocking.rb +19 -2
- data/lib/karafka/pro/processing/jobs/periodic.rb +19 -2
- data/lib/karafka/pro/processing/jobs/periodic_non_blocking.rb +19 -2
- data/lib/karafka/pro/processing/jobs/revoked_non_blocking.rb +19 -2
- data/lib/karafka/pro/processing/jobs_builder.rb +19 -2
- data/lib/karafka/pro/processing/jobs_queue.rb +19 -2
- data/lib/karafka/pro/processing/offset_metadata/consumer.rb +20 -3
- data/lib/karafka/pro/processing/offset_metadata/fetcher.rb +19 -2
- data/lib/karafka/pro/processing/offset_metadata/listener.rb +19 -2
- data/lib/karafka/pro/processing/parallel_segments/filters/base.rb +25 -8
- data/lib/karafka/pro/processing/parallel_segments/filters/default.rb +19 -2
- data/lib/karafka/pro/processing/parallel_segments/filters/mom.rb +19 -2
- data/lib/karafka/pro/processing/partitioner.rb +22 -5
- data/lib/karafka/pro/processing/periodic_job/consumer.rb +25 -7
- data/lib/karafka/pro/processing/piping/consumer.rb +26 -9
- data/lib/karafka/pro/processing/schedulers/base.rb +24 -7
- data/lib/karafka/pro/processing/schedulers/default.rb +24 -7
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +25 -5
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +25 -5
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +25 -5
- data/lib/karafka/pro/processing/strategies/aj/ftr_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +21 -4
- data/lib/karafka/pro/processing/strategies/aj/mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/aj/mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/base.rb +19 -2
- data/lib/karafka/pro/processing/strategies/default.rb +41 -24
- data/lib/karafka/pro/processing/strategies/dlq/default.rb +26 -9
- data/lib/karafka/pro/processing/strategies/dlq/ftr.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +25 -5
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +25 -5
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/mom.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/dlq/vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/ftr/default.rb +21 -4
- data/lib/karafka/pro/processing/strategies/ftr/vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/lrj/default.rb +21 -4
- data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +25 -5
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +25 -5
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/lrj/mom.rb +21 -4
- data/lib/karafka/pro/processing/strategies/lrj/mom_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/lrj/vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/mom/default.rb +19 -2
- data/lib/karafka/pro/processing/strategies/mom/ftr.rb +19 -2
- data/lib/karafka/pro/processing/strategies/mom/ftr_vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/mom/vp.rb +19 -2
- data/lib/karafka/pro/processing/strategies/vp/default.rb +19 -2
- data/lib/karafka/pro/processing/strategies.rb +19 -2
- data/lib/karafka/pro/processing/strategy_selector.rb +19 -2
- data/lib/karafka/pro/processing/subscription_groups_coordinator.rb +19 -2
- data/lib/karafka/pro/processing/virtual_partitions/distributors/balanced.rb +19 -2
- data/lib/karafka/pro/processing/virtual_partitions/distributors/base.rb +19 -2
- data/lib/karafka/pro/processing/virtual_partitions/distributors/consistent.rb +19 -2
- data/lib/karafka/pro/recurring_tasks/consumer.rb +21 -4
- data/lib/karafka/pro/recurring_tasks/contracts/config.rb +21 -4
- data/lib/karafka/pro/recurring_tasks/contracts/task.rb +21 -4
- data/lib/karafka/pro/recurring_tasks/deserializer.rb +19 -2
- data/lib/karafka/pro/recurring_tasks/dispatcher.rb +21 -4
- data/lib/karafka/pro/recurring_tasks/errors.rb +19 -2
- data/lib/karafka/pro/recurring_tasks/executor.rb +19 -2
- data/lib/karafka/pro/recurring_tasks/listener.rb +20 -3
- data/lib/karafka/pro/recurring_tasks/matcher.rb +21 -4
- data/lib/karafka/pro/recurring_tasks/schedule.rb +19 -2
- data/lib/karafka/pro/recurring_tasks/serializer.rb +24 -7
- data/lib/karafka/pro/recurring_tasks/setup/config.rb +22 -5
- data/lib/karafka/pro/recurring_tasks/task.rb +23 -6
- data/lib/karafka/pro/recurring_tasks.rb +23 -6
- data/lib/karafka/pro/routing/features/active_job/builder.rb +19 -2
- data/lib/karafka/pro/routing/features/active_job.rb +19 -2
- data/lib/karafka/pro/routing/features/adaptive_iterator/config.rb +19 -2
- data/lib/karafka/pro/routing/features/adaptive_iterator/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/adaptive_iterator/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/adaptive_iterator.rb +19 -2
- data/lib/karafka/pro/routing/features/base.rb +19 -2
- data/lib/karafka/pro/routing/features/dead_letter_queue/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/dead_letter_queue/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/dead_letter_queue.rb +19 -2
- data/lib/karafka/pro/routing/features/delaying/config.rb +19 -2
- data/lib/karafka/pro/routing/features/delaying/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/delaying/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/delaying.rb +19 -2
- data/lib/karafka/pro/routing/features/direct_assignments/config.rb +19 -2
- data/lib/karafka/pro/routing/features/direct_assignments/contracts/consumer_group.rb +21 -4
- data/lib/karafka/pro/routing/features/direct_assignments/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/direct_assignments/subscription_group.rb +19 -2
- data/lib/karafka/pro/routing/features/direct_assignments/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/direct_assignments.rb +19 -2
- data/lib/karafka/pro/routing/features/expiring/config.rb +19 -2
- data/lib/karafka/pro/routing/features/expiring/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/expiring/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/expiring.rb +19 -2
- data/lib/karafka/pro/routing/features/filtering/config.rb +19 -2
- data/lib/karafka/pro/routing/features/filtering/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/filtering/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/filtering.rb +19 -2
- data/lib/karafka/pro/routing/features/inline_insights/config.rb +19 -2
- data/lib/karafka/pro/routing/features/inline_insights/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/inline_insights/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/inline_insights.rb +19 -2
- data/lib/karafka/pro/routing/features/long_running_job/config.rb +19 -2
- data/lib/karafka/pro/routing/features/long_running_job/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/long_running_job/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/long_running_job.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing/config.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/multiplexing/patches/contracts/consumer_group.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing/proxy.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing/subscription_group.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing/subscription_groups_builder.rb +19 -2
- data/lib/karafka/pro/routing/features/multiplexing.rb +24 -7
- data/lib/karafka/pro/routing/features/non_blocking_job/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/non_blocking_job.rb +19 -2
- data/lib/karafka/pro/routing/features/offset_metadata/config.rb +19 -2
- data/lib/karafka/pro/routing/features/offset_metadata/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/offset_metadata/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/offset_metadata.rb +20 -3
- data/lib/karafka/pro/routing/features/parallel_segments/builder.rb +19 -2
- data/lib/karafka/pro/routing/features/parallel_segments/config.rb +19 -2
- data/lib/karafka/pro/routing/features/parallel_segments/consumer_group.rb +24 -7
- data/lib/karafka/pro/routing/features/parallel_segments/contracts/consumer_group.rb +21 -4
- data/lib/karafka/pro/routing/features/parallel_segments/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/parallel_segments.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/builder.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/config.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/consumer_group.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/contracts/consumer_group.rb +21 -4
- data/lib/karafka/pro/routing/features/patterns/contracts/pattern.rb +22 -5
- data/lib/karafka/pro/routing/features/patterns/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/patterns/detector.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/pattern.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/patterns.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/patterns/topics.rb +19 -2
- data/lib/karafka/pro/routing/features/patterns.rb +19 -2
- data/lib/karafka/pro/routing/features/pausing/config.rb +19 -2
- data/lib/karafka/pro/routing/features/pausing/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/pausing/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/pausing.rb +19 -2
- data/lib/karafka/pro/routing/features/periodic_job/config.rb +19 -2
- data/lib/karafka/pro/routing/features/periodic_job/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/periodic_job/topic.rb +20 -3
- data/lib/karafka/pro/routing/features/periodic_job.rb +19 -2
- data/lib/karafka/pro/routing/features/recurring_tasks/builder.rb +26 -9
- data/lib/karafka/pro/routing/features/recurring_tasks/config.rb +19 -2
- data/lib/karafka/pro/routing/features/recurring_tasks/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/recurring_tasks/proxy.rb +19 -2
- data/lib/karafka/pro/routing/features/recurring_tasks/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/recurring_tasks.rb +19 -2
- data/lib/karafka/pro/routing/features/scheduled_messages/builder.rb +32 -15
- data/lib/karafka/pro/routing/features/scheduled_messages/config.rb +19 -2
- data/lib/karafka/pro/routing/features/scheduled_messages/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/scheduled_messages/proxy.rb +19 -2
- data/lib/karafka/pro/routing/features/scheduled_messages/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/scheduled_messages.rb +19 -2
- data/lib/karafka/pro/routing/features/swarm/config.rb +19 -2
- data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +21 -4
- data/lib/karafka/pro/routing/features/swarm/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/swarm/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/swarm.rb +20 -3
- data/lib/karafka/pro/routing/features/throttling/config.rb +19 -2
- data/lib/karafka/pro/routing/features/throttling/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/throttling/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/throttling.rb +19 -2
- data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +26 -9
- data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +21 -4
- data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +19 -2
- data/lib/karafka/pro/routing/features/virtual_partitions.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/consumer.rb +23 -6
- data/lib/karafka/pro/scheduled_messages/contracts/config.rb +21 -4
- data/lib/karafka/pro/scheduled_messages/contracts/message.rb +29 -12
- data/lib/karafka/pro/scheduled_messages/daily_buffer.rb +21 -4
- data/lib/karafka/pro/scheduled_messages/day.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/deserializers/headers.rb +23 -6
- data/lib/karafka/pro/scheduled_messages/deserializers/payload.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/dispatcher.rb +24 -7
- data/lib/karafka/pro/scheduled_messages/errors.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/max_epoch.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/proxy.rb +27 -10
- data/lib/karafka/pro/scheduled_messages/schema_validator.rb +20 -3
- data/lib/karafka/pro/scheduled_messages/serializer.rb +19 -2
- data/lib/karafka/pro/scheduled_messages/setup/config.rb +21 -4
- data/lib/karafka/pro/scheduled_messages/state.rb +20 -3
- data/lib/karafka/pro/scheduled_messages/tracker.rb +21 -4
- data/lib/karafka/pro/scheduled_messages.rb +21 -4
- data/lib/karafka/pro/swarm/liveness_listener.rb +21 -4
- data/lib/karafka/process.rb +1 -1
- data/lib/karafka/processing/coordinator.rb +1 -1
- data/lib/karafka/processing/inline_insights/consumer.rb +4 -4
- data/lib/karafka/processing/inline_insights/tracker.rb +6 -6
- data/lib/karafka/processing/jobs/base.rb +6 -4
- data/lib/karafka/processing/schedulers/default.rb +4 -4
- data/lib/karafka/processing/strategies/base.rb +6 -6
- data/lib/karafka/processing/strategies/default.rb +13 -13
- data/lib/karafka/processing/strategies/dlq.rb +1 -1
- data/lib/karafka/processing/worker.rb +5 -5
- data/lib/karafka/railtie.rb +11 -11
- data/lib/karafka/routing/builder.rb +3 -3
- data/lib/karafka/routing/contracts/consumer_group.rb +6 -6
- data/lib/karafka/routing/contracts/routing.rb +2 -2
- data/lib/karafka/routing/contracts/topic.rb +4 -4
- data/lib/karafka/routing/features/active_job/contracts/topic.rb +3 -3
- data/lib/karafka/routing/features/base/expander.rb +4 -4
- data/lib/karafka/routing/features/base.rb +8 -8
- data/lib/karafka/routing/features/dead_letter_queue/contracts/topic.rb +2 -2
- data/lib/karafka/routing/features/declaratives/contracts/topic.rb +2 -2
- data/lib/karafka/routing/features/deserializers/contracts/topic.rb +2 -2
- data/lib/karafka/routing/features/eofed/contracts/topic.rb +3 -3
- data/lib/karafka/routing/features/inline_insights/contracts/topic.rb +2 -2
- data/lib/karafka/routing/features/inline_insights.rb +7 -7
- data/lib/karafka/routing/features/manual_offset_management/contracts/topic.rb +2 -2
- data/lib/karafka/routing/subscription_group.rb +9 -9
- data/lib/karafka/runner.rb +3 -3
- data/lib/karafka/server.rb +5 -5
- data/lib/karafka/setup/attributes_map.rb +7 -7
- data/lib/karafka/setup/config.rb +11 -11
- data/lib/karafka/setup/contracts/config.rb +2 -2
- data/lib/karafka/setup/defaults_injector.rb +11 -11
- data/lib/karafka/swarm/manager.rb +6 -6
- data/lib/karafka/swarm/node.rb +7 -7
- data/lib/karafka/swarm/supervisor.rb +6 -6
- data/lib/karafka/swarm.rb +1 -1
- data/lib/karafka/time_trackers/pause.rb +1 -1
- data/lib/karafka/version.rb +1 -1
- data/lib/karafka.rb +36 -36
- metadata +7 -4
|
@@ -334,7 +334,7 @@ module Karafka
|
|
|
334
334
|
].freeze
|
|
335
335
|
|
|
336
336
|
# Location of the file with rdkafka settings list
|
|
337
|
-
SOURCE = <<~SOURCE.delete("\n").gsub(/\s+/,
|
|
337
|
+
SOURCE = <<~SOURCE.delete("\n").gsub(/\s+/, "/")
|
|
338
338
|
https://raw.githubusercontent.com
|
|
339
339
|
confluentinc/librdkafka
|
|
340
340
|
v#{Rdkafka::LIBRDKAFKA_VERSION}
|
|
@@ -365,21 +365,21 @@ module Karafka
|
|
|
365
365
|
# options list in case it would change
|
|
366
366
|
def generate
|
|
367
367
|
# Not used anywhere else, hence required here
|
|
368
|
-
require
|
|
368
|
+
require "open-uri"
|
|
369
369
|
|
|
370
370
|
attributes = { consumer: Set.new, producer: Set.new }
|
|
371
371
|
|
|
372
372
|
URI.parse(SOURCE).open.readlines.each do |line|
|
|
373
|
-
next unless line.include?(
|
|
373
|
+
next unless line.include?("|")
|
|
374
374
|
|
|
375
|
-
attribute, attribute_type = line.split(
|
|
375
|
+
attribute, attribute_type = line.split("|").map(&:strip)
|
|
376
376
|
|
|
377
377
|
case attribute_type
|
|
378
|
-
when
|
|
378
|
+
when "C"
|
|
379
379
|
attributes[:consumer] << attribute
|
|
380
|
-
when
|
|
380
|
+
when "P"
|
|
381
381
|
attributes[:producer] << attribute
|
|
382
|
-
when
|
|
382
|
+
when "*"
|
|
383
383
|
attributes[:consumer] << attribute
|
|
384
384
|
attributes[:producer] << attribute
|
|
385
385
|
else
|
data/lib/karafka/setup/config.rb
CHANGED
|
@@ -26,12 +26,12 @@ module Karafka
|
|
|
26
26
|
# terms and conditions
|
|
27
27
|
setting :token, default: false
|
|
28
28
|
# option entity [String] for whom we did issue the license
|
|
29
|
-
setting :entity, default:
|
|
29
|
+
setting :entity, default: ""
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
# option client_id [String] kafka client_id - used to uniquely identify given client instance
|
|
33
33
|
# Used only for logging.
|
|
34
|
-
setting :client_id, default:
|
|
34
|
+
setting :client_id, default: "karafka"
|
|
35
35
|
# option logger [Instance] logger that we want to use
|
|
36
36
|
setting :logger, default: Karafka::Instrumentation::Logger.new
|
|
37
37
|
# option monitor [Instance] monitor that we will to use (defaults to Karafka::Monitor)
|
|
@@ -41,7 +41,7 @@ module Karafka
|
|
|
41
41
|
setting :consumer_persistence, default: true
|
|
42
42
|
# option [String] should we start with the earliest possible offset or latest
|
|
43
43
|
# This will set the `auto.offset.reset` value unless present in the kafka scope
|
|
44
|
-
setting :initial_offset, default:
|
|
44
|
+
setting :initial_offset, default: "earliest"
|
|
45
45
|
# options max_messages [Integer] how many messages do we want to fetch from Kafka in one go
|
|
46
46
|
setting :max_messages, default: 100
|
|
47
47
|
# option [Integer] number of milliseconds we can wait while fetching data
|
|
@@ -71,7 +71,7 @@ module Karafka
|
|
|
71
71
|
# and/or we work with existing systems where we cannot change topics names.
|
|
72
72
|
setting :strict_topics_namespacing, default: true
|
|
73
73
|
# option [String] default consumer group name for implicit routing
|
|
74
|
-
setting :group_id, default:
|
|
74
|
+
setting :group_id, default: "app"
|
|
75
75
|
# option [Boolean] when set to true, it will validate as part of the routing validation, that
|
|
76
76
|
# all topics and DLQ topics (even not active) have the declarative topics definitions.
|
|
77
77
|
# Really useful when you want to ensure that all topics in routing are managed via
|
|
@@ -115,22 +115,22 @@ module Karafka
|
|
|
115
115
|
# option [Hash] extra changes to the default root kafka settings
|
|
116
116
|
setting :kafka, default: {
|
|
117
117
|
# We want to know when there is no more data not to end up with an endless loop
|
|
118
|
-
|
|
118
|
+
"enable.partition.eof": true,
|
|
119
119
|
# Do not publish statistics from admin as they are not relevant
|
|
120
|
-
|
|
120
|
+
"statistics.interval.ms": 0,
|
|
121
121
|
# Fetch at most 5 MBs when using admin
|
|
122
|
-
|
|
122
|
+
"fetch.message.max.bytes": 5 * 1_048_576,
|
|
123
123
|
# Do not commit offset automatically, this prevents offset tracking for operations
|
|
124
124
|
# involving a consumer instance
|
|
125
|
-
|
|
125
|
+
"enable.auto.commit": false,
|
|
126
126
|
# Make sure that topic metadata lookups do not create topics accidentally
|
|
127
|
-
|
|
127
|
+
"allow.auto.create.topics": false,
|
|
128
128
|
# Do not store offsets automatically in admin in any way
|
|
129
|
-
|
|
129
|
+
"enable.auto.offset.store": false
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
# option [String] default name for the admin consumer group.
|
|
133
|
-
setting :group_id, default:
|
|
133
|
+
setting :group_id, default: "karafka_admin"
|
|
134
134
|
|
|
135
135
|
# option max_wait_time [Integer] We wait only for this amount of time before raising error
|
|
136
136
|
# as we intercept this error and retry after checking that the operation was finished or
|
|
@@ -13,8 +13,8 @@ module Karafka
|
|
|
13
13
|
class Config < Karafka::Contracts::Base
|
|
14
14
|
configure do |config|
|
|
15
15
|
config.error_messages = YAML.safe_load_file(
|
|
16
|
-
File.join(Karafka.gem_root,
|
|
17
|
-
).fetch(
|
|
16
|
+
File.join(Karafka.gem_root, "config", "locales", "errors.yml")
|
|
17
|
+
).fetch("en").fetch("validations").fetch("setup").fetch("config")
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# Topics regexp constant reference for easier usage
|
|
@@ -10,18 +10,18 @@ module Karafka
|
|
|
10
10
|
CONSUMER_KAFKA_DEFAULTS = {
|
|
11
11
|
# We emit the statistics by default, so all the instrumentation and web-ui work out of
|
|
12
12
|
# the box, without requiring users to take any extra actions aside from enabling.
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
"statistics.interval.ms": 5_000,
|
|
14
|
+
"client.software.name": "karafka",
|
|
15
15
|
# Same as librdkafka default, we inject it nonetheless to have it always available as
|
|
16
16
|
# some features may use this value for computation and it is better to ensure, we do
|
|
17
17
|
# always have it
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
"max.poll.interval.ms": 300_000,
|
|
19
|
+
"socket.nagle.disable": true,
|
|
20
|
+
"client.software.version": [
|
|
21
21
|
"v#{Karafka::VERSION}",
|
|
22
22
|
"rdkafka-ruby-v#{Rdkafka::VERSION}",
|
|
23
23
|
"librdkafka-v#{Rdkafka::LIBRDKAFKA_VERSION}"
|
|
24
|
-
].join(
|
|
24
|
+
].join("-")
|
|
25
25
|
}.freeze
|
|
26
26
|
|
|
27
27
|
# Contains settings that should not be used in production but make life easier in dev
|
|
@@ -29,12 +29,12 @@ module Karafka
|
|
|
29
29
|
# Will create non-existing topics automatically.
|
|
30
30
|
# Note that the broker needs to be configured with `auto.create.topics.enable=true`
|
|
31
31
|
# While it is not recommended in prod, it simplifies work in dev
|
|
32
|
-
|
|
32
|
+
"allow.auto.create.topics": "true",
|
|
33
33
|
# We refresh the cluster state often as newly created topics in dev may not be detected
|
|
34
34
|
# fast enough. Fast enough means within reasonable time to provide decent user experience
|
|
35
35
|
# While it's only a one time thing for new topics, it can still be irritating to have to
|
|
36
36
|
# restart the process.
|
|
37
|
-
|
|
37
|
+
"topic.metadata.refresh.interval.ms": 5_000
|
|
38
38
|
}.freeze
|
|
39
39
|
|
|
40
40
|
# Contains settings that should not be used in production but make life easier in dev
|
|
@@ -42,9 +42,9 @@ module Karafka
|
|
|
42
42
|
# they have to set this by themselves.
|
|
43
43
|
PRODUCER_KAFKA_DEV_DEFAULTS = {
|
|
44
44
|
# For all of those same reasoning as for the consumer
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
"allow.auto.create.topics": "true",
|
|
46
|
+
"topic.metadata.refresh.interval.ms": 5_000,
|
|
47
|
+
"socket.nagle.disable": true
|
|
48
48
|
}.freeze
|
|
49
49
|
|
|
50
50
|
private_constant(
|
|
@@ -77,7 +77,7 @@ module Karafka
|
|
|
77
77
|
|
|
78
78
|
# Checks on nodes if they are ok one after another
|
|
79
79
|
def control
|
|
80
|
-
monitor.instrument(
|
|
80
|
+
monitor.instrument("swarm.manager.control", caller: self) do
|
|
81
81
|
@nodes.each do |node|
|
|
82
82
|
statuses = @statuses[node]
|
|
83
83
|
|
|
@@ -107,7 +107,7 @@ module Karafka
|
|
|
107
107
|
# Do not run any other checks on this node if it is during stopping but still has time
|
|
108
108
|
return true unless over?(statuses[:stop], shutdown_timeout)
|
|
109
109
|
|
|
110
|
-
monitor.instrument(
|
|
110
|
+
monitor.instrument("swarm.manager.terminating", caller: self, node: node) do
|
|
111
111
|
node.terminate
|
|
112
112
|
statuses[:terminate] = monotonic_now
|
|
113
113
|
end
|
|
@@ -135,7 +135,7 @@ module Karafka
|
|
|
135
135
|
else
|
|
136
136
|
# A single invalid report will cause it to stop. We do not support intermediate failures
|
|
137
137
|
# that would recover. Such states should be implemented in the listener.
|
|
138
|
-
monitor.instrument(
|
|
138
|
+
monitor.instrument("swarm.manager.stopping", caller: self, node: node, status: status) do
|
|
139
139
|
node.stop
|
|
140
140
|
statuses[:stop] = monotonic_now
|
|
141
141
|
end
|
|
@@ -157,7 +157,7 @@ module Karafka
|
|
|
157
157
|
|
|
158
158
|
# Start the stopping procedure if the node stopped reporting frequently enough
|
|
159
159
|
monitor.instrument(
|
|
160
|
-
|
|
160
|
+
"swarm.manager.stopping",
|
|
161
161
|
caller: self,
|
|
162
162
|
node: node,
|
|
163
163
|
status: NOT_RESPONDING_SHUTDOWN_STATUS
|
|
@@ -210,9 +210,9 @@ module Karafka
|
|
|
210
210
|
statuses.clear
|
|
211
211
|
statuses[:control] = monotonic_now
|
|
212
212
|
|
|
213
|
-
monitor.instrument(
|
|
213
|
+
monitor.instrument("swarm.manager.before_fork", instr_args)
|
|
214
214
|
node.start
|
|
215
|
-
monitor.instrument(
|
|
215
|
+
monitor.instrument("swarm.manager.after_fork", instr_args)
|
|
216
216
|
|
|
217
217
|
node
|
|
218
218
|
end
|
data/lib/karafka/swarm/node.rb
CHANGED
|
@@ -100,9 +100,9 @@ module Karafka
|
|
|
100
100
|
|
|
101
101
|
swarm.node = self
|
|
102
102
|
monitor.subscribe(liveness_listener)
|
|
103
|
-
monitor.instrument(
|
|
103
|
+
monitor.instrument("swarm.node.after_fork", caller: self)
|
|
104
104
|
|
|
105
|
-
Karafka::Process.tags.add(:execution_mode,
|
|
105
|
+
Karafka::Process.tags.add(:execution_mode, "mode:swarm")
|
|
106
106
|
Karafka::Process.tags.add(:swarm_nodeid, "node:#{@id}")
|
|
107
107
|
|
|
108
108
|
Server.execution_mode.swarm!
|
|
@@ -118,7 +118,7 @@ module Karafka
|
|
|
118
118
|
# Indicates that this node is doing well
|
|
119
119
|
# @note Child API
|
|
120
120
|
def healthy
|
|
121
|
-
write(
|
|
121
|
+
write("0")
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
# Indicates, that this node has failed
|
|
@@ -127,7 +127,7 @@ module Karafka
|
|
|
127
127
|
# have complex health-checking with reporting.
|
|
128
128
|
# @note Child API
|
|
129
129
|
# @note We convert this to string to normalize the API
|
|
130
|
-
def unhealthy(reason_code =
|
|
130
|
+
def unhealthy(reason_code = "1")
|
|
131
131
|
write(reason_code.to_s)
|
|
132
132
|
end
|
|
133
133
|
|
|
@@ -192,19 +192,19 @@ module Karafka
|
|
|
192
192
|
# Sends sigterm to the node
|
|
193
193
|
# @note Parent API
|
|
194
194
|
def stop
|
|
195
|
-
signal(
|
|
195
|
+
signal("TERM")
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
# Sends sigtstp to the node
|
|
199
199
|
# @note Parent API
|
|
200
200
|
def quiet
|
|
201
|
-
signal(
|
|
201
|
+
signal("TSTP")
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
# Terminates node
|
|
205
205
|
# @note Parent API
|
|
206
206
|
def terminate
|
|
207
|
-
signal(
|
|
207
|
+
signal("KILL")
|
|
208
208
|
end
|
|
209
209
|
|
|
210
210
|
# Sends provided signal to the node
|
|
@@ -66,7 +66,7 @@ module Karafka
|
|
|
66
66
|
process.on_sigquit { stop }
|
|
67
67
|
process.on_sigterm { stop }
|
|
68
68
|
process.on_sigtstp { quiet }
|
|
69
|
-
process.on_sigttin { signal(
|
|
69
|
+
process.on_sigttin { signal("TTIN") }
|
|
70
70
|
# Needed to be registered as we want to unlock on child changes
|
|
71
71
|
process.on_sigchld { nil }
|
|
72
72
|
process.on_any_active { unlock }
|
|
@@ -87,13 +87,13 @@ module Karafka
|
|
|
87
87
|
# If anything went wrong during supervision, signal this and die
|
|
88
88
|
# Supervisor is meant to be thin and not cause any issues. If you encounter this case
|
|
89
89
|
# please report it as it should be considered critical
|
|
90
|
-
rescue
|
|
90
|
+
rescue => e
|
|
91
91
|
monitor.instrument(
|
|
92
|
-
|
|
92
|
+
"error.occurred",
|
|
93
93
|
caller: self,
|
|
94
94
|
error: e,
|
|
95
95
|
manager: manager,
|
|
96
|
-
type:
|
|
96
|
+
type: "swarm.supervisor.error"
|
|
97
97
|
)
|
|
98
98
|
|
|
99
99
|
manager.terminate
|
|
@@ -148,11 +148,11 @@ module Karafka
|
|
|
148
148
|
raise Errors::ForcefulShutdownError
|
|
149
149
|
rescue Errors::ForcefulShutdownError => e
|
|
150
150
|
monitor.instrument(
|
|
151
|
-
|
|
151
|
+
"error.occurred",
|
|
152
152
|
caller: self,
|
|
153
153
|
error: e,
|
|
154
154
|
manager: manager,
|
|
155
|
-
type:
|
|
155
|
+
type: "app.stopping.error"
|
|
156
156
|
)
|
|
157
157
|
|
|
158
158
|
# Run forceful kill
|
data/lib/karafka/swarm.rb
CHANGED
data/lib/karafka/version.rb
CHANGED
data/lib/karafka.rb
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
9
|
-
require
|
|
10
|
-
require
|
|
11
|
-
require
|
|
12
|
-
require
|
|
13
|
-
require
|
|
14
|
-
require
|
|
15
|
-
require
|
|
16
|
-
require
|
|
17
|
-
require
|
|
18
|
-
require
|
|
3
|
+
require "karafka-core"
|
|
4
|
+
require "delegate"
|
|
5
|
+
require "English"
|
|
6
|
+
require "rdkafka"
|
|
7
|
+
require "waterdrop"
|
|
8
|
+
require "json"
|
|
9
|
+
require "forwardable"
|
|
10
|
+
require "fileutils"
|
|
11
|
+
require "openssl"
|
|
12
|
+
require "optparse"
|
|
13
|
+
require "socket"
|
|
14
|
+
require "date"
|
|
15
|
+
require "singleton"
|
|
16
|
+
require "digest"
|
|
17
|
+
require "zeitwerk"
|
|
18
|
+
require "logger"
|
|
19
19
|
|
|
20
20
|
# Karafka framework main namespace
|
|
21
21
|
module Karafka
|
|
@@ -50,7 +50,7 @@ module Karafka
|
|
|
50
50
|
|
|
51
51
|
# @return [Pathname] root path of this gem
|
|
52
52
|
def gem_root
|
|
53
|
-
Pathname.new(File.expand_path(
|
|
53
|
+
Pathname.new(File.expand_path("..", __dir__))
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
# @return [Pathname] Karafka app root path (user application path)
|
|
@@ -58,26 +58,26 @@ module Karafka
|
|
|
58
58
|
return @root if @root
|
|
59
59
|
|
|
60
60
|
# If user points to a different root explicitly, use it
|
|
61
|
-
if ENV[
|
|
62
|
-
@root = Pathname.new(ENV[
|
|
61
|
+
if ENV["KARAFKA_ROOT_DIR"]
|
|
62
|
+
@root = Pathname.new(ENV["KARAFKA_ROOT_DIR"])
|
|
63
63
|
|
|
64
64
|
return @root
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
if defined?(::Bundler)
|
|
67
|
+
@root = if defined?(::Bundler)
|
|
68
68
|
# By default we infer the project root from bundler.
|
|
69
69
|
# We cannot use the BUNDLE_GEMFILE env directly because it may be altered by things like
|
|
70
70
|
# ruby-lsp. Instead we always fallback to the most outer Gemfile. In most of the cases, it
|
|
71
71
|
# won't matter but in case of some automatic setup alterations like ruby-lsp, the location
|
|
72
72
|
# from which the project starts may not match the original Gemfile.
|
|
73
|
-
|
|
73
|
+
Pathname.new(
|
|
74
74
|
File.dirname(
|
|
75
75
|
Bundler.with_unbundled_env { Bundler.default_gemfile }
|
|
76
76
|
)
|
|
77
77
|
)
|
|
78
78
|
else
|
|
79
79
|
# Fallback when Bundler is not available: use current directory
|
|
80
|
-
|
|
80
|
+
Pathname.new(Dir.pwd)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
@root
|
|
@@ -85,7 +85,7 @@ module Karafka
|
|
|
85
85
|
|
|
86
86
|
# @return [Pathname] path to Karafka gem root core
|
|
87
87
|
def core_root
|
|
88
|
-
Pathname.new(File.expand_path(
|
|
88
|
+
Pathname.new(File.expand_path("karafka", __dir__))
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
# @return [Boolean] true if there is a valid pro token present
|
|
@@ -102,16 +102,16 @@ module Karafka
|
|
|
102
102
|
def rails?
|
|
103
103
|
return @rails if instance_variable_defined?(:@rails)
|
|
104
104
|
|
|
105
|
-
@rails = Object.const_defined?(
|
|
105
|
+
@rails = Object.const_defined?("Rails::Railtie")
|
|
106
106
|
|
|
107
107
|
# If Rails exists we set it immediately based on its presence and return
|
|
108
108
|
return @rails if @rails
|
|
109
109
|
|
|
110
110
|
# If rails is not present and user wants us not to force-load it, we return
|
|
111
|
-
return @rails if ENV[
|
|
111
|
+
return @rails if ENV["KARAFKA_REQUIRE_RAILS"] == "false"
|
|
112
112
|
|
|
113
113
|
# If we should try to require it, we try and if no error, it means its there
|
|
114
|
-
require(
|
|
114
|
+
require("rails")
|
|
115
115
|
|
|
116
116
|
@rails = true
|
|
117
117
|
rescue LoadError
|
|
@@ -128,10 +128,10 @@ module Karafka
|
|
|
128
128
|
# KARAFKA_BOOT_FILE='/home/app_path/app.rb'
|
|
129
129
|
# Karafka.boot_file #=> '/home/app_path/app.rb'
|
|
130
130
|
def boot_file
|
|
131
|
-
boot_file = Pathname.new(ENV[
|
|
131
|
+
boot_file = Pathname.new(ENV["KARAFKA_BOOT_FILE"] || File.join(Karafka.root, "karafka.rb"))
|
|
132
132
|
|
|
133
133
|
return boot_file if boot_file.absolute?
|
|
134
|
-
return boot_file if boot_file.to_s ==
|
|
134
|
+
return boot_file if boot_file.to_s == "false"
|
|
135
135
|
|
|
136
136
|
Pathname.new(
|
|
137
137
|
File.expand_path(
|
|
@@ -158,19 +158,19 @@ end
|
|
|
158
158
|
|
|
159
159
|
loader = Zeitwerk::Loader.for_gem
|
|
160
160
|
# Do not load Rails extensions by default, this will be handled by Railtie if they are needed
|
|
161
|
-
loader.ignore(Karafka.gem_root.join(
|
|
161
|
+
loader.ignore(Karafka.gem_root.join("lib/active_job"))
|
|
162
162
|
# Do not load CurrentAttributes components as they will be loaded if needed
|
|
163
163
|
# @note We have to exclude both the .rb file as well as the whole directory so users can require
|
|
164
164
|
# current attributes only when needed
|
|
165
|
-
loader.ignore(Karafka.gem_root.join(
|
|
166
|
-
loader.ignore(Karafka.gem_root.join(
|
|
165
|
+
loader.ignore(Karafka.gem_root.join("lib/karafka/active_job/current_attributes"))
|
|
166
|
+
loader.ignore(Karafka.gem_root.join("lib/karafka/active_job/current_attributes.rb"))
|
|
167
167
|
# Do not load Railtie. It will load if after everything is ready, so we don't have to load any
|
|
168
168
|
# Karafka components when we require this railtie. Railtie needs to be loaded last.
|
|
169
|
-
loader.ignore(Karafka.gem_root.join(
|
|
169
|
+
loader.ignore(Karafka.gem_root.join("lib/karafka/railtie"))
|
|
170
170
|
# Do not load pro components as they will be loaded if needed and allowed
|
|
171
|
-
loader.ignore(Karafka.core_root.join(
|
|
171
|
+
loader.ignore(Karafka.core_root.join("pro/"))
|
|
172
172
|
# Do not load vendors instrumentation components. Those need to be required manually if needed
|
|
173
|
-
loader.ignore(Karafka.core_root.join(
|
|
173
|
+
loader.ignore(Karafka.core_root.join("instrumentation/vendors"))
|
|
174
174
|
loader.setup
|
|
175
175
|
loader.eager_load
|
|
176
176
|
|
|
@@ -182,12 +182,12 @@ Karafka::Routing::Features::Base.load_all
|
|
|
182
182
|
# to make pro components available in case anyone wants to use them as a base to their own
|
|
183
183
|
# custom components. Otherwise inheritance would not work.
|
|
184
184
|
Karafka::Licenser.detect do
|
|
185
|
-
require
|
|
185
|
+
require "karafka/pro/loader"
|
|
186
186
|
|
|
187
187
|
Karafka::Pro::Loader.require_all
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
# Load railtie after everything else is ready so we know we can rely on it.
|
|
191
|
-
require
|
|
191
|
+
require "karafka/railtie"
|
|
192
192
|
|
|
193
193
|
Karafka::Constraints.verify!
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: karafka
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.
|
|
4
|
+
version: 2.5.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Maciej Mensfeld
|
|
@@ -35,14 +35,14 @@ dependencies:
|
|
|
35
35
|
requirements:
|
|
36
36
|
- - ">="
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: 0.
|
|
38
|
+
version: 0.24.0
|
|
39
39
|
type: :runtime
|
|
40
40
|
prerelease: false
|
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
42
42
|
requirements:
|
|
43
43
|
- - ">="
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 0.
|
|
45
|
+
version: 0.24.0
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: waterdrop
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -95,6 +95,7 @@ files:
|
|
|
95
95
|
- LICENSE-LGPL
|
|
96
96
|
- README.md
|
|
97
97
|
- bin/karafka
|
|
98
|
+
- certs/expired.txt
|
|
98
99
|
- certs/karafka-pro.pem
|
|
99
100
|
- config/locales/errors.yml
|
|
100
101
|
- config/locales/pro_errors.yml
|
|
@@ -216,6 +217,8 @@ files:
|
|
|
216
217
|
- lib/karafka/pro/cli/parallel_segments/base.rb
|
|
217
218
|
- lib/karafka/pro/cli/parallel_segments/collapse.rb
|
|
218
219
|
- lib/karafka/pro/cli/parallel_segments/distribute.rb
|
|
220
|
+
- lib/karafka/pro/cli/topics.rb
|
|
221
|
+
- lib/karafka/pro/cli/topics/health.rb
|
|
219
222
|
- lib/karafka/pro/connection/manager.rb
|
|
220
223
|
- lib/karafka/pro/connection/multiplexing/listener.rb
|
|
221
224
|
- lib/karafka/pro/contracts/base.rb
|
|
@@ -573,7 +576,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
573
576
|
- !ruby/object:Gem::Version
|
|
574
577
|
version: '0'
|
|
575
578
|
requirements: []
|
|
576
|
-
rubygems_version:
|
|
579
|
+
rubygems_version: 4.0.3
|
|
577
580
|
specification_version: 4
|
|
578
581
|
summary: Karafka is Ruby and Rails efficient Kafka processing framework.
|
|
579
582
|
test_files: []
|