karafka 2.5.9 → 2.6.0.beta1
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 +34 -0
- data/certs/expired.txt +83 -0
- data/config/locales/errors.yml +17 -7
- data/karafka.gemspec +3 -3
- data/lib/active_job/queue_adapters/karafka_adapter.rb +1 -2
- data/lib/karafka/active_job/job_extensions.rb +1 -2
- data/lib/karafka/admin/configs/resource.rb +1 -2
- data/lib/karafka/admin/consumer_groups.rb +109 -98
- data/lib/karafka/admin/isolation_levels.rb +22 -0
- data/lib/karafka/admin/topics.rb +103 -8
- data/lib/karafka/admin.rb +59 -31
- data/lib/karafka/app.rb +16 -5
- data/lib/karafka/base_consumer.rb +2 -2
- data/lib/karafka/cli/contracts/server.rb +4 -4
- data/lib/karafka/cli/info.rb +1 -1
- data/lib/karafka/cli/topics/base.rb +10 -18
- data/lib/karafka/cli/topics/repartition.rb +1 -1
- data/lib/karafka/connection/client.rb +40 -9
- data/lib/karafka/connection/consumer_groups/rebalance_manager.rb +120 -0
- data/lib/karafka/connection/listener.rb +8 -7
- data/lib/karafka/connection/listeners_batch.rb +1 -1
- data/lib/karafka/connection/mode.rb +1 -2
- data/lib/karafka/connection/raw_messages_buffer.rb +0 -5
- data/lib/karafka/declaratives/builder.rb +65 -0
- data/lib/karafka/declaratives/contracts/topic.rb +28 -0
- data/lib/karafka/declaratives/repository.rb +52 -0
- data/lib/karafka/declaratives/topic.rb +100 -0
- data/lib/karafka/declaratives.rb +9 -0
- data/lib/karafka/helpers/interval_runner.rb +2 -2
- data/lib/karafka/instrumentation/assignments_tracker.rb +65 -2
- data/lib/karafka/instrumentation/callbacks/consumer_groups/error.rb +56 -0
- data/lib/karafka/instrumentation/callbacks/consumer_groups/rebalance.rb +93 -0
- data/lib/karafka/instrumentation/callbacks/consumer_groups/statistics.rb +59 -0
- data/lib/karafka/instrumentation/logger_listener.rb +27 -9
- data/lib/karafka/instrumentation/notifications.rb +2 -0
- data/lib/karafka/instrumentation/vendors/appsignal/metrics_listener.rb +14 -17
- data/lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb +8 -9
- data/lib/karafka/instrumentation/vendors/kubernetes/base_listener.rb +7 -3
- data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +13 -10
- data/lib/karafka/licenser.rb +16 -3
- data/lib/karafka/pro/active_job/consumer.rb +1 -2
- data/lib/karafka/pro/active_job/dispatcher.rb +1 -2
- data/lib/karafka/pro/admin/recovery.rb +19 -19
- data/lib/karafka/pro/base_consumer.rb +3 -3
- data/lib/karafka/pro/cli/contracts/server.rb +5 -5
- data/lib/karafka/pro/cli/parallel_segments/base.rb +7 -7
- data/lib/karafka/pro/cli/parallel_segments/collapse.rb +4 -4
- data/lib/karafka/pro/cli/parallel_segments/distribute.rb +6 -6
- data/lib/karafka/pro/iterator/tpl_builder.rb +38 -18
- data/lib/karafka/pro/loader.rb +15 -12
- data/lib/karafka/pro/processing/consumer_groups/adaptive_iterator/consumer.rb +84 -0
- data/lib/karafka/pro/processing/consumer_groups/adaptive_iterator/tracker.rb +97 -0
- data/lib/karafka/pro/processing/consumer_groups/collapser.rb +84 -0
- data/lib/karafka/pro/processing/consumer_groups/coordinator.rb +202 -0
- data/lib/karafka/pro/processing/consumer_groups/coordinators/errors_tracker.rb +124 -0
- data/lib/karafka/pro/processing/consumer_groups/coordinators/filters_applier.rb +157 -0
- data/lib/karafka/pro/processing/consumer_groups/coordinators/virtual_offset_manager.rb +212 -0
- data/lib/karafka/pro/processing/{filters/expirer.rb → consumer_groups/executor.rb} +17 -31
- data/lib/karafka/pro/processing/{jobs/periodic.rb → consumer_groups/expansions_selector.rb} +18 -21
- data/lib/karafka/pro/processing/consumer_groups/filters/base.rb +103 -0
- data/lib/karafka/pro/processing/consumer_groups/filters/delayer.rb +92 -0
- data/lib/karafka/pro/processing/consumer_groups/filters/expirer.rb +78 -0
- data/lib/karafka/pro/processing/consumer_groups/filters/inline_insights_delayer.rb +99 -0
- data/lib/karafka/pro/processing/consumer_groups/filters/throttler.rb +106 -0
- data/lib/karafka/pro/processing/consumer_groups/filters/virtual_limiter.rb +79 -0
- data/lib/karafka/pro/processing/{jobs → consumer_groups/jobs}/consume_non_blocking.rb +21 -17
- data/lib/karafka/pro/processing/{virtual_partitions/distributors/consistent.rb → consumer_groups/jobs/eofed_non_blocking.rb} +16 -14
- data/lib/karafka/pro/processing/consumer_groups/jobs/periodic.rb +64 -0
- data/lib/karafka/pro/processing/{jobs → consumer_groups/jobs}/periodic_non_blocking.rb +16 -11
- data/lib/karafka/pro/processing/{jobs → consumer_groups/jobs}/revoked_non_blocking.rb +19 -15
- data/lib/karafka/pro/processing/consumer_groups/jobs_builder.rb +95 -0
- data/lib/karafka/pro/processing/consumer_groups/offset_metadata/consumer.rb +66 -0
- data/lib/karafka/pro/processing/consumer_groups/offset_metadata/fetcher.rb +154 -0
- data/lib/karafka/pro/processing/consumer_groups/offset_metadata/listener.rb +68 -0
- data/lib/karafka/pro/processing/consumer_groups/parallel_segments/filters/base.rb +102 -0
- data/lib/karafka/pro/processing/consumer_groups/parallel_segments/filters/default.rb +115 -0
- data/lib/karafka/pro/processing/consumer_groups/parallel_segments/filters/mom.rb +96 -0
- data/lib/karafka/pro/processing/consumer_groups/partitioner.rb +98 -0
- data/lib/karafka/pro/processing/consumer_groups/periodic_job/consumer.rb +90 -0
- data/lib/karafka/pro/processing/consumer_groups/piping/consumer.rb +154 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_ftr_lrj_mom.rb +93 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_ftr_lrj_mom_vp.rb +99 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_ftr_mom.rb +92 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_ftr_mom_vp.rb +90 -0
- data/lib/karafka/pro/processing/{strategies/aj/dlq_ftr_lrj_mom.rb → consumer_groups/strategies/aj/dlq_lrj_mom.rb} +37 -39
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_lrj_mom_vp.rb +90 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_mom.rb +84 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/dlq_mom_vp.rb +89 -0
- data/lib/karafka/pro/processing/{strategies → consumer_groups/strategies}/aj/ftr_lrj_mom.rb +20 -15
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/ftr_lrj_mom_vp.rb +91 -0
- data/lib/karafka/pro/processing/{strategies → consumer_groups/strategies}/aj/ftr_mom.rb +20 -15
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/ftr_mom_vp.rb +80 -0
- data/lib/karafka/pro/processing/{strategies/mom/default.rb → consumer_groups/strategies/aj/lrj_mom.rb} +18 -22
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/lrj_mom_vp.rb +106 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/mom.rb +58 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/aj/mom_vp.rb +74 -0
- data/lib/karafka/pro/processing/{strategies/lrj/vp.rb → consumer_groups/strategies/base.rb} +9 -14
- data/lib/karafka/pro/processing/consumer_groups/strategies/default.rb +421 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/default.rb +285 -0
- data/lib/karafka/pro/processing/{strategies/dlq/lrj.rb → consumer_groups/strategies/dlq/ftr.rb} +30 -29
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/ftr_lrj.rb +95 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/ftr_lrj_mom.rb +97 -0
- data/lib/karafka/pro/processing/{executor.rb → consumer_groups/strategies/dlq/ftr_lrj_mom_vp.rb} +26 -15
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/ftr_lrj_vp.rb +63 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/ftr_mom.rb +97 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/ftr_mom_vp.rb +63 -0
- data/lib/karafka/pro/{routing/features/patterns/patterns.rb → processing/consumer_groups/strategies/dlq/ftr_vp.rb} +22 -12
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/lrj.rb +83 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/lrj_mom.rb +100 -0
- data/lib/karafka/pro/processing/{strategies → consumer_groups/strategies}/dlq/lrj_mom_vp.rb +18 -13
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/lrj_vp.rb +61 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/mom.rb +96 -0
- data/lib/karafka/pro/processing/{strategies/lrj → consumer_groups/strategies/dlq}/mom_vp.rb +19 -15
- data/lib/karafka/pro/processing/consumer_groups/strategies/dlq/vp.rb +62 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/ftr/default.rb +146 -0
- data/lib/karafka/pro/processing/{strategies/mom/ftr.rb → consumer_groups/strategies/ftr/vp.rb} +20 -28
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/default.rb +119 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/ftr.rb +94 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/ftr_mom.rb +92 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/ftr_mom_vp.rb +62 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/ftr_vp.rb +61 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/mom.rb +101 -0
- data/lib/karafka/pro/processing/consumer_groups/strategies/lrj/mom_vp.rb +60 -0
- data/lib/karafka/pro/processing/{strategies/mom → consumer_groups/strategies/lrj}/vp.rb +18 -12
- data/lib/karafka/pro/processing/{strategies/aj/mom_vp.rb → consumer_groups/strategies/mom/default.rb} +22 -23
- data/lib/karafka/pro/processing/{strategies/aj/ftr_mom_vp.rb → consumer_groups/strategies/mom/ftr.rb} +28 -28
- data/lib/karafka/pro/processing/{virtual_partitions/distributors/base.rb → consumer_groups/strategies/mom/ftr_vp.rb} +19 -14
- data/lib/karafka/pro/processing/{strategies/aj/mom.rb → consumer_groups/strategies/mom/vp.rb} +16 -12
- data/lib/karafka/pro/processing/consumer_groups/strategies/vp/default.rb +197 -0
- data/lib/karafka/pro/processing/consumer_groups/strategy_selector.rb +106 -0
- data/lib/karafka/pro/processing/consumer_groups/subscription_groups_coordinator.rb +73 -0
- data/lib/karafka/pro/processing/consumer_groups/virtual_partitions/distributors/balanced.rb +82 -0
- data/lib/karafka/pro/processing/consumer_groups/virtual_partitions/distributors/base.rb +59 -0
- data/lib/karafka/pro/processing/{strategies/dlq/ftr.rb → consumer_groups/virtual_partitions/distributors/consistent.rb} +18 -33
- data/lib/karafka/pro/processing/filters/base.rb +3 -61
- data/lib/karafka/pro/processing/partitioner.rb +2 -57
- data/lib/karafka/pro/processing/schedulers/base.rb +10 -6
- data/lib/karafka/pro/processing/schedulers/default.rb +6 -5
- data/lib/karafka/pro/recurring_tasks/executor.rb +1 -2
- data/lib/karafka/pro/routing/features/{active_job → consumer_groups/active_job}/builder.rb +20 -18
- data/lib/karafka/pro/routing/features/{inline_insights/config.rb → consumer_groups/active_job.rb} +5 -9
- data/lib/karafka/pro/routing/features/consumer_groups/adaptive_iterator/config.rb +53 -0
- data/lib/karafka/pro/routing/features/consumer_groups/adaptive_iterator/contracts/topic.rb +91 -0
- data/lib/karafka/pro/routing/features/consumer_groups/adaptive_iterator/topic.rb +90 -0
- data/lib/karafka/pro/routing/features/consumer_groups/adaptive_iterator.rb +50 -0
- data/lib/karafka/pro/routing/features/{patterns/contracts/consumer_group.rb → consumer_groups/dead_letter_queue/contracts/topic.rb} +25 -30
- data/lib/karafka/pro/routing/features/consumer_groups/dead_letter_queue/topic.rb +70 -0
- data/lib/karafka/pro/routing/features/consumer_groups/dead_letter_queue.rb +46 -0
- data/lib/karafka/pro/routing/features/{direct_assignments → consumer_groups/delaying}/config.rb +6 -4
- data/lib/karafka/pro/routing/features/{patterns/contracts/pattern.rb → consumer_groups/delaying/contracts/topic.rb} +13 -16
- data/lib/karafka/pro/routing/features/consumer_groups/delaying/topic.rb +85 -0
- data/lib/karafka/pro/routing/features/{adaptive_iterator/config.rb → consumer_groups/delaying.rb} +8 -11
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments/config.rb +46 -0
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments/contracts/consumer_group.rb +68 -0
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments/contracts/topic.rb +125 -0
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments/subscription_group.rb +97 -0
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments/topic.rb +97 -0
- data/lib/karafka/pro/routing/features/consumer_groups/direct_assignments.rb +44 -0
- data/lib/karafka/pro/routing/features/consumer_groups/inline_insights/config.rb +51 -0
- data/lib/karafka/pro/routing/features/consumer_groups/inline_insights/contracts/topic.rb +58 -0
- data/lib/karafka/pro/routing/features/consumer_groups/inline_insights/topic.rb +80 -0
- data/lib/karafka/pro/routing/features/consumer_groups/inline_insights.rb +45 -0
- data/lib/karafka/pro/routing/features/consumer_groups/long_running_job/config.rb +47 -0
- data/lib/karafka/pro/routing/features/{multiplexing/patches/contracts/consumer_group.rb → consumer_groups/long_running_job/contracts/topic.rb} +13 -15
- data/lib/karafka/pro/routing/features/consumer_groups/long_running_job/topic.rb +72 -0
- data/lib/karafka/pro/routing/features/{long_running_job.rb → consumer_groups/long_running_job.rb} +6 -4
- data/lib/karafka/pro/routing/features/consumer_groups/multiplexing/config.rb +58 -0
- data/lib/karafka/pro/routing/features/consumer_groups/multiplexing/contracts/routing.rb +83 -0
- data/lib/karafka/pro/routing/features/consumer_groups/multiplexing/contracts/topic.rb +148 -0
- data/lib/karafka/pro/routing/features/{delaying/contracts/topic.rb → consumer_groups/multiplexing/patches/contracts/consumer_group.rb} +19 -14
- data/lib/karafka/pro/routing/features/{multiplexing/subscription_group.rb → consumer_groups/multiplexing/proxy.rb} +17 -23
- data/lib/karafka/pro/routing/features/consumer_groups/multiplexing/subscription_group.rb +68 -0
- data/lib/karafka/pro/routing/features/{multiplexing → consumer_groups/multiplexing}/subscription_groups_builder.rb +16 -14
- data/lib/karafka/pro/routing/features/consumer_groups/multiplexing.rb +85 -0
- data/lib/karafka/pro/routing/features/consumer_groups/non_blocking_job/topic.rb +51 -0
- data/lib/karafka/pro/routing/features/{non_blocking_job.rb → consumer_groups/non_blocking_job.rb} +15 -13
- data/lib/karafka/pro/routing/features/consumer_groups/offset_metadata/config.rb +52 -0
- data/lib/karafka/pro/routing/features/consumer_groups/offset_metadata/contracts/topic.rb +59 -0
- data/lib/karafka/pro/routing/features/consumer_groups/offset_metadata/topic.rb +93 -0
- data/lib/karafka/pro/routing/features/{offset_metadata.rb → consumer_groups/offset_metadata.rb} +16 -14
- data/lib/karafka/pro/routing/features/consumer_groups/parallel_segments/builder.rb +74 -0
- data/lib/karafka/pro/routing/features/{multiplexing → consumer_groups/parallel_segments}/config.rb +13 -15
- data/lib/karafka/pro/routing/features/consumer_groups/parallel_segments/consumer_group.rb +110 -0
- data/lib/karafka/pro/routing/features/consumer_groups/parallel_segments/contracts/consumer_group.rb +74 -0
- data/lib/karafka/pro/routing/features/{parallel_segments → consumer_groups/parallel_segments}/topic.rb +24 -22
- data/lib/karafka/pro/routing/features/consumer_groups/parallel_segments.rb +51 -0
- data/lib/karafka/pro/routing/features/{patterns → consumer_groups/patterns}/builder.rb +15 -13
- data/lib/karafka/pro/routing/features/{offset_metadata/contracts/topic.rb → consumer_groups/patterns/config.rb} +28 -13
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/consumer_group.rb +91 -0
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/contracts/consumer_group.rb +83 -0
- data/lib/karafka/pro/routing/features/{parallel_segments.rb → consumer_groups/patterns/contracts/pattern.rb} +24 -10
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/contracts/topic.rb +58 -0
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/detector.rb +98 -0
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/pattern.rb +114 -0
- data/lib/karafka/pro/routing/features/{recurring_tasks/contracts/topic.rb → consumer_groups/patterns/patterns.rb} +12 -13
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/topic.rb +78 -0
- data/lib/karafka/pro/routing/features/consumer_groups/patterns/topics.rb +72 -0
- data/lib/karafka/pro/routing/features/consumer_groups/patterns.rb +52 -0
- data/lib/karafka/pro/routing/features/consumer_groups/periodic_job/config.rb +56 -0
- data/lib/karafka/pro/routing/features/{direct_assignments/contracts/consumer_group.rb → consumer_groups/periodic_job/contracts/topic.rb} +17 -22
- data/lib/karafka/pro/routing/features/consumer_groups/periodic_job/topic.rb +122 -0
- data/lib/karafka/pro/routing/features/consumer_groups/periodic_job.rb +46 -0
- data/lib/karafka/pro/routing/features/consumer_groups/recurring_tasks/builder.rb +150 -0
- data/lib/karafka/pro/routing/features/{swarm → consumer_groups/recurring_tasks}/config.rb +7 -8
- data/lib/karafka/pro/routing/features/{inline_insights → consumer_groups/recurring_tasks}/contracts/topic.rb +14 -13
- data/lib/karafka/pro/routing/features/{scheduled_messages → consumer_groups/recurring_tasks}/proxy.rb +6 -4
- data/lib/karafka/pro/routing/features/consumer_groups/recurring_tasks/topic.rb +72 -0
- data/lib/karafka/pro/routing/features/consumer_groups/recurring_tasks.rb +44 -0
- data/lib/karafka/pro/routing/features/consumer_groups/scheduled_messages/builder.rb +154 -0
- data/lib/karafka/pro/routing/features/consumer_groups/scheduled_messages/config.rb +47 -0
- data/lib/karafka/pro/routing/features/{long_running_job → consumer_groups/scheduled_messages}/contracts/topic.rb +14 -12
- data/lib/karafka/pro/routing/features/{delaying/config.rb → consumer_groups/scheduled_messages/proxy.rb} +6 -4
- data/lib/karafka/pro/routing/features/consumer_groups/scheduled_messages/topic.rb +72 -0
- data/lib/karafka/pro/routing/features/{recurring_tasks/proxy.rb → consumer_groups/scheduled_messages.rb} +3 -4
- data/lib/karafka/pro/routing/features/{non_blocking_job/topic.rb → consumer_groups/swarm/config.rb} +9 -8
- data/lib/karafka/pro/routing/features/consumer_groups/swarm/contracts/routing.rb +94 -0
- data/lib/karafka/pro/routing/features/consumer_groups/swarm/contracts/topic.rb +95 -0
- data/lib/karafka/pro/routing/features/consumer_groups/swarm/topic.rb +105 -0
- data/lib/karafka/pro/routing/features/consumer_groups/swarm.rb +58 -0
- data/lib/karafka/pro/routing/features/consumer_groups/virtual_partitions/config.rb +69 -0
- data/lib/karafka/pro/routing/features/{parallel_segments/contracts/consumer_group.rb → consumer_groups/virtual_partitions/contracts/topic.rb} +21 -18
- data/lib/karafka/pro/routing/features/consumer_groups/virtual_partitions/topic.rb +101 -0
- data/lib/karafka/pro/routing/features/consumer_groups/virtual_partitions.rb +46 -0
- data/lib/karafka/pro/routing/features/{scheduled_messages.rb → consumer_groups.rb} +3 -2
- data/lib/karafka/pro/routing/features/expiring/topic.rb +4 -4
- data/lib/karafka/pro/routing/features/filtering/topic.rb +3 -3
- data/lib/karafka/pro/routing/features/pausing/topic.rb +3 -3
- data/lib/karafka/pro/routing/features/throttling/topic.rb +4 -4
- data/lib/karafka/pro/setup/defaults_injector.rb +70 -0
- data/lib/karafka/pro/swarm/liveness_listener.rb +22 -10
- data/lib/karafka/processing/consumer_groups/coordinator.rb +221 -0
- data/lib/karafka/processing/consumer_groups/coordinators_buffer.rb +69 -0
- data/lib/karafka/processing/consumer_groups/executor.rb +220 -0
- data/lib/karafka/processing/consumer_groups/executors_buffer.rb +94 -0
- data/lib/karafka/processing/consumer_groups/expansions_selector.rb +26 -0
- data/lib/karafka/processing/consumer_groups/inline_insights/consumer.rb +47 -0
- data/lib/karafka/processing/consumer_groups/inline_insights/listener.rb +23 -0
- data/lib/karafka/processing/consumer_groups/inline_insights/tracker.rb +132 -0
- data/lib/karafka/processing/consumer_groups/jobs/consume.rb +52 -0
- data/lib/karafka/processing/consumer_groups/jobs/eofed.rb +34 -0
- data/lib/karafka/processing/consumer_groups/jobs/idle.rb +33 -0
- data/lib/karafka/processing/consumer_groups/jobs/revoked.rb +34 -0
- data/lib/karafka/processing/consumer_groups/jobs/shutdown.rb +32 -0
- data/lib/karafka/processing/consumer_groups/jobs_builder.rb +36 -0
- data/lib/karafka/processing/consumer_groups/partitioner.rb +28 -0
- data/lib/karafka/processing/consumer_groups/strategies/aj_dlq_mom.rb +48 -0
- data/lib/karafka/processing/consumer_groups/strategies/aj_mom.rb +25 -0
- data/lib/karafka/processing/consumer_groups/strategies/base.rb +65 -0
- data/lib/karafka/processing/consumer_groups/strategies/default.rb +218 -0
- data/lib/karafka/processing/consumer_groups/strategies/dlq.rb +157 -0
- data/lib/karafka/processing/consumer_groups/strategies/dlq_mom.rb +72 -0
- data/lib/karafka/processing/consumer_groups/strategies/mom.rb +33 -0
- data/lib/karafka/processing/consumer_groups/strategy_selector.rb +53 -0
- data/lib/karafka/processing/coordinator.rb +4 -211
- data/lib/karafka/processing/coordinators_buffer.rb +4 -59
- data/lib/karafka/processing/jobs_queue.rb +12 -4
- data/lib/karafka/processing/partitioner.rb +4 -18
- data/lib/karafka/processing/schedulers/default.rb +2 -1
- data/lib/karafka/processing/strategy_selector.rb +4 -42
- data/lib/karafka/processing/worker.rb +8 -4
- data/lib/karafka/processing/workers_pool.rb +158 -0
- data/lib/karafka/routing/builder.rb +12 -12
- data/lib/karafka/routing/contracts/routing.rb +3 -4
- data/lib/karafka/routing/features/base/expander.rb +5 -5
- data/lib/karafka/routing/features/consumer_groups/active_job/builder.rb +35 -0
- data/lib/karafka/routing/features/consumer_groups/active_job/config.rb +17 -0
- data/lib/karafka/routing/features/consumer_groups/active_job/contracts/topic.rb +44 -0
- data/lib/karafka/routing/features/consumer_groups/active_job/proxy.rb +16 -0
- data/lib/karafka/routing/features/consumer_groups/active_job/topic.rb +50 -0
- data/lib/karafka/routing/features/consumer_groups/active_job.rb +15 -0
- data/lib/karafka/routing/features/consumer_groups/dead_letter_queue/config.rb +39 -0
- data/lib/karafka/routing/features/consumer_groups/dead_letter_queue/contracts/topic.rb +58 -0
- data/lib/karafka/routing/features/consumer_groups/dead_letter_queue/topic.rb +76 -0
- data/lib/karafka/routing/features/consumer_groups/dead_letter_queue.rb +18 -0
- data/lib/karafka/routing/features/consumer_groups/eofed/config.rb +17 -0
- data/lib/karafka/routing/features/consumer_groups/eofed/contracts/topic.rb +39 -0
- data/lib/karafka/routing/features/consumer_groups/eofed/topic.rb +42 -0
- data/lib/karafka/routing/features/consumer_groups/eofed.rb +16 -0
- data/lib/karafka/routing/features/consumer_groups/inline_insights/config.rb +17 -0
- data/lib/karafka/routing/features/consumer_groups/inline_insights/contracts/topic.rb +27 -0
- data/lib/karafka/routing/features/consumer_groups/inline_insights/topic.rb +42 -0
- data/lib/karafka/routing/features/consumer_groups/inline_insights.rb +42 -0
- data/lib/karafka/routing/features/consumer_groups/manual_offset_management/config.rb +17 -0
- data/lib/karafka/routing/features/consumer_groups/manual_offset_management/contracts/topic.rb +27 -0
- data/lib/karafka/routing/features/consumer_groups/manual_offset_management/topic.rb +46 -0
- data/lib/karafka/routing/features/consumer_groups/manual_offset_management.rb +20 -0
- data/lib/karafka/routing/features/consumer_groups.rb +12 -0
- data/lib/karafka/routing/features/declaratives/contracts/topic.rb +4 -19
- data/lib/karafka/routing/features/declaratives/topic.rb +30 -14
- data/lib/karafka/routing/features/deserializers/topic.rb +3 -3
- data/lib/karafka/routing/router.rb +2 -2
- data/lib/karafka/routing/subscription_group.rb +18 -9
- data/lib/karafka/routing/topic.rb +25 -11
- data/lib/karafka/runner.rb +17 -17
- data/lib/karafka/server.rb +28 -6
- data/lib/karafka/setup/attributes_map.rb +2 -0
- data/lib/karafka/setup/config.rb +64 -15
- data/lib/karafka/setup/config_proxy.rb +1 -2
- data/lib/karafka/setup/contracts/config.rb +28 -8
- data/lib/karafka/setup/defaults_injector.rb +10 -0
- data/lib/karafka/status.rb +1 -2
- data/lib/karafka/swarm/liveness_listener.rb +7 -0
- data/lib/karafka/swarm/manager.rb +7 -7
- data/lib/karafka/swarm/node.rb +8 -0
- data/lib/karafka/swarm/supervisor.rb +9 -1
- data/lib/karafka/templates/karafka.rb.erb +11 -5
- data/lib/karafka/version.rb +1 -1
- metadata +237 -224
- data/lib/karafka/connection/rebalance_manager.rb +0 -116
- data/lib/karafka/instrumentation/callbacks/error.rb +0 -52
- data/lib/karafka/instrumentation/callbacks/rebalance.rb +0 -84
- data/lib/karafka/instrumentation/callbacks/statistics.rb +0 -55
- data/lib/karafka/pro/processing/adaptive_iterator/consumer.rb +0 -79
- data/lib/karafka/pro/processing/adaptive_iterator/tracker.rb +0 -92
- data/lib/karafka/pro/processing/collapser.rb +0 -79
- data/lib/karafka/pro/processing/coordinator.rb +0 -197
- data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +0 -119
- data/lib/karafka/pro/processing/coordinators/filters_applier.rb +0 -152
- data/lib/karafka/pro/processing/coordinators/virtual_offset_manager.rb +0 -207
- data/lib/karafka/pro/processing/expansions_selector.rb +0 -52
- data/lib/karafka/pro/processing/filters/delayer.rb +0 -87
- data/lib/karafka/pro/processing/filters/inline_insights_delayer.rb +0 -95
- data/lib/karafka/pro/processing/filters/throttler.rb +0 -101
- data/lib/karafka/pro/processing/filters/virtual_limiter.rb +0 -74
- data/lib/karafka/pro/processing/jobs/eofed_non_blocking.rb +0 -51
- data/lib/karafka/pro/processing/jobs_builder.rb +0 -90
- data/lib/karafka/pro/processing/offset_metadata/consumer.rb +0 -61
- data/lib/karafka/pro/processing/offset_metadata/fetcher.rb +0 -149
- data/lib/karafka/pro/processing/offset_metadata/listener.rb +0 -63
- data/lib/karafka/pro/processing/parallel_segments/filters/base.rb +0 -98
- data/lib/karafka/pro/processing/parallel_segments/filters/default.rb +0 -110
- data/lib/karafka/pro/processing/parallel_segments/filters/mom.rb +0 -91
- data/lib/karafka/pro/processing/periodic_job/consumer.rb +0 -85
- data/lib/karafka/pro/processing/piping/consumer.rb +0 -149
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +0 -94
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +0 -87
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +0 -85
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +0 -81
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +0 -85
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +0 -79
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +0 -84
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +0 -86
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom.rb +0 -54
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +0 -101
- data/lib/karafka/pro/processing/strategies/base.rb +0 -43
- data/lib/karafka/pro/processing/strategies/default.rb +0 -416
- data/lib/karafka/pro/processing/strategies/dlq/default.rb +0 -280
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +0 -90
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +0 -92
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +0 -60
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +0 -58
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +0 -92
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +0 -58
- data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +0 -57
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +0 -95
- data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +0 -56
- data/lib/karafka/pro/processing/strategies/dlq/mom.rb +0 -91
- data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +0 -54
- data/lib/karafka/pro/processing/strategies/dlq/vp.rb +0 -57
- data/lib/karafka/pro/processing/strategies/ftr/default.rb +0 -141
- data/lib/karafka/pro/processing/strategies/ftr/vp.rb +0 -57
- data/lib/karafka/pro/processing/strategies/lrj/default.rb +0 -114
- data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +0 -89
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +0 -87
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb +0 -57
- data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +0 -56
- data/lib/karafka/pro/processing/strategies/lrj/mom.rb +0 -96
- data/lib/karafka/pro/processing/strategies/mom/ftr_vp.rb +0 -54
- data/lib/karafka/pro/processing/strategies/vp/default.rb +0 -192
- data/lib/karafka/pro/processing/strategies.rb +0 -39
- data/lib/karafka/pro/processing/strategy_selector.rb +0 -102
- data/lib/karafka/pro/processing/subscription_groups_coordinator.rb +0 -68
- data/lib/karafka/pro/processing/virtual_partitions/distributors/balanced.rb +0 -77
- data/lib/karafka/pro/routing/features/active_job.rb +0 -43
- data/lib/karafka/pro/routing/features/adaptive_iterator/contracts/topic.rb +0 -89
- data/lib/karafka/pro/routing/features/adaptive_iterator/topic.rb +0 -88
- data/lib/karafka/pro/routing/features/adaptive_iterator.rb +0 -48
- data/lib/karafka/pro/routing/features/dead_letter_queue/contracts/topic.rb +0 -74
- data/lib/karafka/pro/routing/features/dead_letter_queue/topic.rb +0 -68
- data/lib/karafka/pro/routing/features/dead_letter_queue.rb +0 -44
- data/lib/karafka/pro/routing/features/delaying/topic.rb +0 -83
- data/lib/karafka/pro/routing/features/delaying.rb +0 -46
- data/lib/karafka/pro/routing/features/direct_assignments/contracts/topic.rb +0 -123
- data/lib/karafka/pro/routing/features/direct_assignments/subscription_group.rb +0 -95
- data/lib/karafka/pro/routing/features/direct_assignments/topic.rb +0 -95
- data/lib/karafka/pro/routing/features/direct_assignments.rb +0 -42
- data/lib/karafka/pro/routing/features/inline_insights/topic.rb +0 -78
- data/lib/karafka/pro/routing/features/inline_insights.rb +0 -43
- data/lib/karafka/pro/routing/features/long_running_job/config.rb +0 -45
- data/lib/karafka/pro/routing/features/long_running_job/topic.rb +0 -70
- data/lib/karafka/pro/routing/features/multiplexing/contracts/routing.rb +0 -81
- data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +0 -146
- data/lib/karafka/pro/routing/features/multiplexing/proxy.rb +0 -58
- data/lib/karafka/pro/routing/features/multiplexing.rb +0 -83
- data/lib/karafka/pro/routing/features/offset_metadata/config.rb +0 -50
- data/lib/karafka/pro/routing/features/offset_metadata/topic.rb +0 -91
- data/lib/karafka/pro/routing/features/parallel_segments/builder.rb +0 -72
- data/lib/karafka/pro/routing/features/parallel_segments/config.rb +0 -52
- data/lib/karafka/pro/routing/features/parallel_segments/consumer_group.rb +0 -108
- data/lib/karafka/pro/routing/features/patterns/config.rb +0 -71
- data/lib/karafka/pro/routing/features/patterns/consumer_group.rb +0 -89
- data/lib/karafka/pro/routing/features/patterns/contracts/topic.rb +0 -56
- data/lib/karafka/pro/routing/features/patterns/detector.rb +0 -96
- data/lib/karafka/pro/routing/features/patterns/pattern.rb +0 -112
- data/lib/karafka/pro/routing/features/patterns/topic.rb +0 -76
- data/lib/karafka/pro/routing/features/patterns/topics.rb +0 -70
- data/lib/karafka/pro/routing/features/patterns.rb +0 -50
- data/lib/karafka/pro/routing/features/periodic_job/config.rb +0 -54
- data/lib/karafka/pro/routing/features/periodic_job/contracts/topic.rb +0 -59
- data/lib/karafka/pro/routing/features/periodic_job/topic.rb +0 -120
- data/lib/karafka/pro/routing/features/periodic_job.rb +0 -44
- data/lib/karafka/pro/routing/features/recurring_tasks/builder.rb +0 -148
- data/lib/karafka/pro/routing/features/recurring_tasks/config.rb +0 -45
- data/lib/karafka/pro/routing/features/recurring_tasks/topic.rb +0 -70
- data/lib/karafka/pro/routing/features/recurring_tasks.rb +0 -42
- data/lib/karafka/pro/routing/features/scheduled_messages/builder.rb +0 -152
- data/lib/karafka/pro/routing/features/scheduled_messages/config.rb +0 -45
- data/lib/karafka/pro/routing/features/scheduled_messages/contracts/topic.rb +0 -55
- data/lib/karafka/pro/routing/features/scheduled_messages/topic.rb +0 -70
- data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +0 -92
- data/lib/karafka/pro/routing/features/swarm/contracts/topic.rb +0 -93
- data/lib/karafka/pro/routing/features/swarm/topic.rb +0 -103
- data/lib/karafka/pro/routing/features/swarm.rb +0 -56
- data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +0 -67
- data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +0 -73
- data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +0 -99
- data/lib/karafka/pro/routing/features/virtual_partitions.rb +0 -44
- data/lib/karafka/processing/executor.rb +0 -216
- data/lib/karafka/processing/executors_buffer.rb +0 -90
- data/lib/karafka/processing/expansions_selector.rb +0 -22
- data/lib/karafka/processing/inline_insights/consumer.rb +0 -43
- data/lib/karafka/processing/inline_insights/listener.rb +0 -19
- data/lib/karafka/processing/inline_insights/tracker.rb +0 -129
- data/lib/karafka/processing/jobs/consume.rb +0 -47
- data/lib/karafka/processing/jobs/eofed.rb +0 -29
- data/lib/karafka/processing/jobs/idle.rb +0 -31
- data/lib/karafka/processing/jobs/revoked.rb +0 -29
- data/lib/karafka/processing/jobs/shutdown.rb +0 -30
- data/lib/karafka/processing/jobs_builder.rb +0 -34
- data/lib/karafka/processing/strategies/aj_dlq_mom.rb +0 -44
- data/lib/karafka/processing/strategies/aj_mom.rb +0 -21
- data/lib/karafka/processing/strategies/base.rb +0 -61
- data/lib/karafka/processing/strategies/default.rb +0 -214
- data/lib/karafka/processing/strategies/dlq.rb +0 -153
- data/lib/karafka/processing/strategies/dlq_mom.rb +0 -68
- data/lib/karafka/processing/strategies/mom.rb +0 -29
- data/lib/karafka/processing/workers_batch.rb +0 -29
- data/lib/karafka/routing/features/active_job/builder.rb +0 -33
- data/lib/karafka/routing/features/active_job/config.rb +0 -15
- data/lib/karafka/routing/features/active_job/contracts/topic.rb +0 -42
- data/lib/karafka/routing/features/active_job/proxy.rb +0 -14
- data/lib/karafka/routing/features/active_job/topic.rb +0 -48
- data/lib/karafka/routing/features/active_job.rb +0 -13
- data/lib/karafka/routing/features/dead_letter_queue/config.rb +0 -37
- data/lib/karafka/routing/features/dead_letter_queue/contracts/topic.rb +0 -56
- data/lib/karafka/routing/features/dead_letter_queue/topic.rb +0 -74
- data/lib/karafka/routing/features/dead_letter_queue.rb +0 -16
- data/lib/karafka/routing/features/declaratives/config.rb +0 -18
- data/lib/karafka/routing/features/eofed/config.rb +0 -15
- data/lib/karafka/routing/features/eofed/contracts/topic.rb +0 -37
- data/lib/karafka/routing/features/eofed/topic.rb +0 -40
- data/lib/karafka/routing/features/eofed.rb +0 -14
- data/lib/karafka/routing/features/inline_insights/config.rb +0 -15
- data/lib/karafka/routing/features/inline_insights/contracts/topic.rb +0 -25
- data/lib/karafka/routing/features/inline_insights/topic.rb +0 -40
- data/lib/karafka/routing/features/inline_insights.rb +0 -40
- data/lib/karafka/routing/features/manual_offset_management/config.rb +0 -15
- data/lib/karafka/routing/features/manual_offset_management/contracts/topic.rb +0 -25
- data/lib/karafka/routing/features/manual_offset_management/topic.rb +0 -44
- data/lib/karafka/routing/features/manual_offset_management.rb +0 -18
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class DeadLetterQueue < Base
|
|
8
|
+
# DLQ topic extensions
|
|
9
|
+
module Topic
|
|
10
|
+
# After how many retries should data be moved to DLQ
|
|
11
|
+
DEFAULT_MAX_RETRIES = 3
|
|
12
|
+
|
|
13
|
+
private_constant :DEFAULT_MAX_RETRIES
|
|
14
|
+
|
|
15
|
+
# This method sets up the extra instance variable to nil before calling
|
|
16
|
+
# the parent class initializer. The explicit initialization
|
|
17
|
+
# to nil is included as an optimization for Ruby's object shapes system,
|
|
18
|
+
# which improves memory layout and access performance.
|
|
19
|
+
def initialize(...)
|
|
20
|
+
@dead_letter_queue = nil
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @param max_retries [Integer] after how many retries should we move data to dlq
|
|
25
|
+
# @param topic [String, false] where the messages should be moved if failing or false
|
|
26
|
+
# if we do not want to move it anywhere and just skip
|
|
27
|
+
# @param independent [Boolean] needs to be true in order for each marking as consumed
|
|
28
|
+
# in a retry flow to reset the errors counter
|
|
29
|
+
# @param transactional [Boolean] if applicable, should transaction be used to move
|
|
30
|
+
# given message to the dead-letter topic and mark it as consumed.
|
|
31
|
+
# @param dispatch_method [Symbol] `:produce_async` or `:produce_sync`. Describes
|
|
32
|
+
# whether dispatch on dlq should be sync or async (async by default)
|
|
33
|
+
# @param marking_method [Symbol] `:mark_as_consumed` or `:mark_as_consumed!`. Describes
|
|
34
|
+
# whether marking on DLQ should be async or sync (async by default)
|
|
35
|
+
# @param mark_after_dispatch [Boolean, nil] Should we mark after dispatch. `nil` means
|
|
36
|
+
# that the default strategy approach to marking will be used. `true` or `false`
|
|
37
|
+
# overwrites the default
|
|
38
|
+
# @return [Config] defined config
|
|
39
|
+
def dead_letter_queue(
|
|
40
|
+
max_retries: DEFAULT_MAX_RETRIES,
|
|
41
|
+
topic: nil,
|
|
42
|
+
independent: false,
|
|
43
|
+
transactional: true,
|
|
44
|
+
dispatch_method: :produce_async,
|
|
45
|
+
marking_method: :mark_as_consumed,
|
|
46
|
+
mark_after_dispatch: nil
|
|
47
|
+
)
|
|
48
|
+
@dead_letter_queue ||= Config.new(
|
|
49
|
+
active: !topic.nil?,
|
|
50
|
+
max_retries: max_retries,
|
|
51
|
+
topic: topic,
|
|
52
|
+
independent: independent,
|
|
53
|
+
transactional: transactional,
|
|
54
|
+
dispatch_method: dispatch_method,
|
|
55
|
+
marking_method: marking_method,
|
|
56
|
+
mark_after_dispatch: mark_after_dispatch
|
|
57
|
+
)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# @return [Boolean] is the dlq active or not
|
|
61
|
+
def dead_letter_queue?
|
|
62
|
+
dead_letter_queue.active?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# @return [Hash] topic with all its native configuration options plus dlq settings
|
|
66
|
+
def to_h
|
|
67
|
+
super.merge(
|
|
68
|
+
dead_letter_queue: dead_letter_queue.to_h
|
|
69
|
+
).freeze
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
# This feature allows to continue processing when encountering errors.
|
|
8
|
+
# After certain number of retries, given messages will be moved to alternative topic,
|
|
9
|
+
# unclogging processing.
|
|
10
|
+
#
|
|
11
|
+
# @note This feature has an expanded version in the Pro mode. We do not use a new feature
|
|
12
|
+
# injection in Pro (topic settings)
|
|
13
|
+
class DeadLetterQueue < Base
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class Eofed < Base
|
|
8
|
+
# Config of this feature
|
|
9
|
+
Config = Struct.new(
|
|
10
|
+
:active,
|
|
11
|
+
keyword_init: true
|
|
12
|
+
) { alias_method :active?, :active }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class Eofed < Base
|
|
8
|
+
# Eofed related contracts namespace
|
|
9
|
+
module Contracts
|
|
10
|
+
# Contract for eofed topic setup
|
|
11
|
+
class Topic < Karafka::Contracts::Base
|
|
12
|
+
configure do |config|
|
|
13
|
+
config.error_messages = YAML.safe_load_file(
|
|
14
|
+
File.join(Karafka.gem_root, "config", "locales", "errors.yml")
|
|
15
|
+
).fetch("en").fetch("validations").fetch("routing").fetch("topic")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
nested :eofed do
|
|
19
|
+
required(:active) { |val| [true, false].include?(val) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
virtual do |data, errors|
|
|
23
|
+
next unless errors.empty?
|
|
24
|
+
|
|
25
|
+
eofed = data[:eofed]
|
|
26
|
+
|
|
27
|
+
next unless eofed[:active]
|
|
28
|
+
|
|
29
|
+
next if data[:kafka][:"enable.partition.eof"]
|
|
30
|
+
|
|
31
|
+
[[%i[eofed kafka], :enable]]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class Eofed < Base
|
|
8
|
+
# Routing topic eofed API
|
|
9
|
+
module Topic
|
|
10
|
+
# This method sets up the extra instance variable to nil before calling
|
|
11
|
+
# the parent class initializer. The explicit initialization
|
|
12
|
+
# to nil is included as an optimization for Ruby's object shapes system,
|
|
13
|
+
# which improves memory layout and access performance.
|
|
14
|
+
def initialize(...)
|
|
15
|
+
@eofed = nil
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @param active [Boolean] should the `#eofed` job run on eof
|
|
20
|
+
def eofed(active = false)
|
|
21
|
+
@eofed ||= Config.new(
|
|
22
|
+
active: active
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [Boolean] Are `#eofed` jobs active
|
|
27
|
+
def eofed?
|
|
28
|
+
eofed.active?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [Hash] topic setup hash
|
|
32
|
+
def to_h
|
|
33
|
+
super.merge(
|
|
34
|
+
eofed: eofed.to_h
|
|
35
|
+
).freeze
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
# Namespace for feature allowing to enable the `#eofed` jobs.
|
|
8
|
+
# We do not enable it always because users may only be interested in fast eofed yielding
|
|
9
|
+
# without running the `#eofed` operation at all. This saves on empty cycles of running
|
|
10
|
+
# pointless empty jobs.
|
|
11
|
+
class Eofed < Base
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class InlineInsights < Base
|
|
8
|
+
# Config of this feature
|
|
9
|
+
Config = Struct.new(
|
|
10
|
+
:active,
|
|
11
|
+
keyword_init: true
|
|
12
|
+
) { alias_method :active?, :active }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class InlineInsights < Base
|
|
8
|
+
# Inline Insights related contracts namespace
|
|
9
|
+
module Contracts
|
|
10
|
+
# Contract for inline insights topic setup
|
|
11
|
+
class Topic < Karafka::Contracts::Base
|
|
12
|
+
configure do |config|
|
|
13
|
+
config.error_messages = YAML.safe_load_file(
|
|
14
|
+
File.join(Karafka.gem_root, "config", "locales", "errors.yml")
|
|
15
|
+
).fetch("en").fetch("validations").fetch("routing").fetch("topic")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
nested :inline_insights do
|
|
19
|
+
required(:active) { |val| [true, false].include?(val) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class InlineInsights < Base
|
|
8
|
+
# Routing topic inline insights API
|
|
9
|
+
module Topic
|
|
10
|
+
# This method sets up the extra instance variable to nil before calling
|
|
11
|
+
# the parent class initializer. The explicit initialization
|
|
12
|
+
# to nil is included as an optimization for Ruby's object shapes system,
|
|
13
|
+
# which improves memory layout and access performance.
|
|
14
|
+
def initialize(...)
|
|
15
|
+
@inline_insights = nil
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @param active [Boolean] should inline insights be activated
|
|
20
|
+
def inline_insights(active = false)
|
|
21
|
+
@inline_insights ||= Config.new(
|
|
22
|
+
active: active
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @return [Boolean] Are inline insights active
|
|
27
|
+
def inline_insights?
|
|
28
|
+
inline_insights.active?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [Hash] topic setup hash
|
|
32
|
+
def to_h
|
|
33
|
+
super.merge(
|
|
34
|
+
inline_insights: inline_insights.to_h
|
|
35
|
+
).freeze
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
# Feature allowing us to get visibility during the consumption into metrics of particular
|
|
8
|
+
# partition we operate on. It can be useful when making context-aware consumers that change
|
|
9
|
+
# their behaviours based on the lag and other parameters.
|
|
10
|
+
class InlineInsights < Base
|
|
11
|
+
class << self
|
|
12
|
+
# If needed installs the needed listener and initializes tracker
|
|
13
|
+
#
|
|
14
|
+
# @param _config [Karafka::Core::Configurable::Node] app config
|
|
15
|
+
def post_setup(_config)
|
|
16
|
+
Karafka::App.monitor.subscribe("app.running") do
|
|
17
|
+
# Do not activate tracking of statistics if none of our active topics uses it
|
|
18
|
+
# This prevents us from tracking metrics when user just runs a subset of topics
|
|
19
|
+
# in a given process and none of those actually utilizes this feature
|
|
20
|
+
next unless Karafka::App
|
|
21
|
+
.subscription_groups
|
|
22
|
+
.values
|
|
23
|
+
.flat_map(&:itself)
|
|
24
|
+
.flat_map(&:topics)
|
|
25
|
+
.flat_map(&:to_a)
|
|
26
|
+
.any?(&:inline_insights?)
|
|
27
|
+
|
|
28
|
+
# Initialize the tracker prior to becoming multi-threaded
|
|
29
|
+
Karafka::Processing::ConsumerGroups::InlineInsights::Tracker.instance
|
|
30
|
+
|
|
31
|
+
# Subscribe to the statistics reports and collect them
|
|
32
|
+
Karafka.monitor.subscribe(
|
|
33
|
+
Karafka::Processing::ConsumerGroups::InlineInsights::Listener.new
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class ManualOffsetManagement < Base
|
|
8
|
+
# Config for manual offset management feature
|
|
9
|
+
Config = Struct.new(
|
|
10
|
+
:active,
|
|
11
|
+
keyword_init: true
|
|
12
|
+
) { alias_method :active?, :active }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class ManualOffsetManagement < Base
|
|
8
|
+
# This feature validation contracts
|
|
9
|
+
module Contracts
|
|
10
|
+
# Rules around manual offset management settings
|
|
11
|
+
class Topic < Karafka::Contracts::Base
|
|
12
|
+
configure do |config|
|
|
13
|
+
config.error_messages = YAML.safe_load_file(
|
|
14
|
+
File.join(Karafka.gem_root, "config", "locales", "errors.yml")
|
|
15
|
+
).fetch("en").fetch("validations").fetch("routing").fetch("topic")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
nested :manual_offset_management do
|
|
19
|
+
required(:active) { |val| [true, false].include?(val) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
class ManualOffsetManagement < Base
|
|
8
|
+
# Topic extensions to be able to manage manual offset management settings
|
|
9
|
+
module Topic
|
|
10
|
+
# This method sets up the extra instance variable to nil before calling
|
|
11
|
+
# the parent class initializer. The explicit initialization
|
|
12
|
+
# to nil is included as an optimization for Ruby's object shapes system,
|
|
13
|
+
# which improves memory layout and access performance.
|
|
14
|
+
def initialize(...)
|
|
15
|
+
@manual_offset_management = nil
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @param active [Boolean] should we stop managing the offset in Karafka and make the user
|
|
20
|
+
# responsible for marking messages as consumed.
|
|
21
|
+
# @return [Config] defined config
|
|
22
|
+
#
|
|
23
|
+
# @note Since this feature supports only one setting (active), we can use the old API
|
|
24
|
+
# where the boolean would be an argument
|
|
25
|
+
def manual_offset_management(active = false)
|
|
26
|
+
@manual_offset_management ||= Config.new(active: active)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @return [Boolean] is manual offset management enabled for a given topic
|
|
30
|
+
def manual_offset_management?
|
|
31
|
+
manual_offset_management.active?
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @return [Hash] topic with all its native configuration options plus manual offset
|
|
35
|
+
# management namespace settings
|
|
36
|
+
def to_h
|
|
37
|
+
super.merge(
|
|
38
|
+
manual_offset_management: manual_offset_management.to_h
|
|
39
|
+
).freeze
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
module ConsumerGroups
|
|
7
|
+
# All the things needed to be able to manage manual offset management from the routing
|
|
8
|
+
# perspective.
|
|
9
|
+
#
|
|
10
|
+
# Manual offset management allows users to completely disable automatic management of the
|
|
11
|
+
# offset. This can be used for implementing long-living window operations and other things
|
|
12
|
+
# where we do not want to commit the offset with each batch.
|
|
13
|
+
#
|
|
14
|
+
# Not all the Karafka and Karafka Pro features may be compatible with this feature being on.
|
|
15
|
+
class ManualOffsetManagement < Base
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Karafka
|
|
4
|
+
module Routing
|
|
5
|
+
module Features
|
|
6
|
+
# Consumer-group-specific routing features. A parallel `ShareGroups` namespace will hold
|
|
7
|
+
# share-group-specific feature implementations once KIP-932 lands.
|
|
8
|
+
module ConsumerGroups
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -4,26 +4,11 @@ module Karafka
|
|
|
4
4
|
module Routing
|
|
5
5
|
module Features
|
|
6
6
|
class Declaratives < Base
|
|
7
|
-
#
|
|
7
|
+
# Contracts used by the routing Expander to validate topic declarations after draw
|
|
8
8
|
module Contracts
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
config.error_messages = YAML.safe_load_file(
|
|
13
|
-
File.join(Karafka.gem_root, "config", "locales", "errors.yml")
|
|
14
|
-
).fetch("en").fetch("validations").fetch("routing").fetch("topic")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
nested :declaratives do
|
|
18
|
-
required(:active) { |val| [true, false].include?(val) }
|
|
19
|
-
required(:partitions) { |val| val.is_a?(Integer) && val.positive? }
|
|
20
|
-
required(:replication_factor) { |val| val.is_a?(Integer) && val.positive? }
|
|
21
|
-
required(:details) do |val|
|
|
22
|
-
val.is_a?(Hash) &&
|
|
23
|
-
val.keys.all?(Symbol)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
9
|
+
# Delegates to the canonical contract in the Declaratives namespace.
|
|
10
|
+
# Required here because the Expander looks up `scope::Contracts::Topic`.
|
|
11
|
+
Topic = Karafka::Declaratives::Contracts::Topic
|
|
27
12
|
end
|
|
28
13
|
end
|
|
29
14
|
end
|
|
@@ -4,35 +4,51 @@ module Karafka
|
|
|
4
4
|
module Routing
|
|
5
5
|
module Features
|
|
6
6
|
class Declaratives < Base
|
|
7
|
-
#
|
|
7
|
+
# Bridge module prepended onto Karafka::Routing::Topic.
|
|
8
|
+
# The config(...) method forwards to the Declaratives subsystem, creating or retrieving
|
|
9
|
+
# a Karafka::Declaratives::Topic in the repository. This preserves backwards compatibility
|
|
10
|
+
# while the actual declarative state lives in Karafka::Declaratives.
|
|
8
11
|
module Topic
|
|
9
|
-
# This method
|
|
10
|
-
#
|
|
12
|
+
# This method sets up the extra instance variable to nil before calling
|
|
13
|
+
# the parent class initializer. The explicit initialization
|
|
11
14
|
# to nil is included as an optimization for Ruby's object shapes system,
|
|
12
15
|
# which improves memory layout and access performance.
|
|
13
16
|
def initialize(...)
|
|
14
|
-
super
|
|
15
17
|
@declaratives = nil
|
|
18
|
+
super
|
|
16
19
|
end
|
|
17
20
|
|
|
21
|
+
# Bridge: creates/retrieves a Declaratives::Topic in the repository and returns it.
|
|
22
|
+
# Preserves the ||= semantics (first call wins) for backwards compatibility.
|
|
23
|
+
#
|
|
18
24
|
# @param active [Boolean] is the topic structure management feature active
|
|
19
25
|
# @param partitions [Integer] number of partitions for the topic
|
|
20
26
|
# @param replication_factor [Integer] replication factor for the topic
|
|
21
27
|
# @param details [Hash] extra configuration for the topic
|
|
22
|
-
# @option details [
|
|
23
|
-
# @option details [
|
|
28
|
+
# @option details [Symbol] :retention.ms retention time in milliseconds
|
|
29
|
+
# @option details [Symbol] :compression.type compression type
|
|
24
30
|
# (none, gzip, snappy, lz4, zstd)
|
|
25
|
-
# @return [
|
|
31
|
+
# @return [Karafka::Declaratives::Topic] the declarative topic
|
|
26
32
|
def config(active: true, partitions: 1, replication_factor: 1, **details)
|
|
27
|
-
@declaratives ||=
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
@declaratives ||= begin
|
|
34
|
+
repo = Karafka::App.declaratives.repository
|
|
35
|
+
|
|
36
|
+
repo.find(name) || begin
|
|
37
|
+
declaration = repo.find_or_create(name)
|
|
38
|
+
declaration.active(active)
|
|
39
|
+
declaration.partitions(partitions)
|
|
40
|
+
declaration.replication_factor(replication_factor)
|
|
41
|
+
declaration.config(details) unless details.empty?
|
|
42
|
+
declaration
|
|
43
|
+
end
|
|
44
|
+
end.tap do |declaration|
|
|
45
|
+
# Set bootstrap servers from the routing topic's kafka config so the CLI can
|
|
46
|
+
# filter by cluster. This runs on every call but is idempotent.
|
|
47
|
+
declaration.bootstrap_servers ||= kafka[:"bootstrap.servers"]
|
|
48
|
+
end
|
|
33
49
|
end
|
|
34
50
|
|
|
35
|
-
# @return [
|
|
51
|
+
# @return [Karafka::Declaratives::Topic] config details
|
|
36
52
|
def declaratives
|
|
37
53
|
config
|
|
38
54
|
end
|
|
@@ -8,13 +8,13 @@ module Karafka
|
|
|
8
8
|
# Routing topic deserializers API. It allows to configure deserializers for various
|
|
9
9
|
# components of each message.
|
|
10
10
|
module Topic
|
|
11
|
-
# This method
|
|
12
|
-
#
|
|
11
|
+
# This method sets up the extra instance variable to nil before calling
|
|
12
|
+
# the parent class initializer. The explicit initialization
|
|
13
13
|
# to nil is included as an optimization for Ruby's object shapes system,
|
|
14
14
|
# which improves memory layout and access performance.
|
|
15
15
|
def initialize(...)
|
|
16
|
-
super
|
|
17
16
|
@deserializers = nil
|
|
17
|
+
super
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# Allows for setting all the deserializers with standard defaults
|
|
@@ -11,8 +11,8 @@ module Karafka
|
|
|
11
11
|
# @param lookup [Hash{Symbol => String}] hash with attribute - value key pairs
|
|
12
12
|
# @return [Karafka::Routing::Topic, nil] proper route details or nil if not found
|
|
13
13
|
def find_by(lookup)
|
|
14
|
-
App.
|
|
15
|
-
|
|
14
|
+
App.routes.each do |group|
|
|
15
|
+
group.topics.each do |topic|
|
|
16
16
|
return topic if lookup.all? do |attribute, value|
|
|
17
17
|
topic.public_send(attribute) == value
|
|
18
18
|
end
|
|
@@ -14,7 +14,12 @@ module Karafka
|
|
|
14
14
|
node: %i[swarm node]
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
-
attr_reader :id, :name, :topics, :kafka, :
|
|
17
|
+
attr_reader :id, :name, :topics, :kafka, :group, :position
|
|
18
|
+
|
|
19
|
+
# Backwards compatible alias for `#group`. Kept purely for compatibility — this is an
|
|
20
|
+
# unconditional alias and performs no type validation, so callers should prefer `#group`
|
|
21
|
+
# once additional group types (e.g. KIP-932 share groups) land.
|
|
22
|
+
alias_method :consumer_group, :group
|
|
18
23
|
|
|
19
24
|
# Lock for generating new ids safely
|
|
20
25
|
ID_MUTEX = Mutex.new
|
|
@@ -45,22 +50,26 @@ module Karafka
|
|
|
45
50
|
def initialize(position, topics)
|
|
46
51
|
@details = topics.first.subscription_group_details
|
|
47
52
|
@name = @details.fetch(:name)
|
|
48
|
-
@
|
|
49
|
-
# We include the
|
|
53
|
+
@group = topics.first.group
|
|
54
|
+
# We include the owning group id here because we want to have unique ids of subscription
|
|
50
55
|
# groups across the system. Otherwise user could set the same name for multiple
|
|
51
|
-
# subscription groups in many
|
|
52
|
-
#
|
|
53
|
-
@id = "#{@consumer_group.id}_#{@name}_#{position}"
|
|
56
|
+
# subscription groups in many groups effectively having same id for different entities
|
|
57
|
+
@id = "#{@group.id}_#{@name}_#{position}"
|
|
54
58
|
@position = position
|
|
55
59
|
@topics = topics
|
|
56
60
|
@kafka = build_kafka
|
|
57
61
|
end
|
|
58
62
|
|
|
59
|
-
# @return [String]
|
|
60
|
-
|
|
63
|
+
# @return [String] group id (the Kafka `group.id` value assigned to this subscription
|
|
64
|
+
# group's connection)
|
|
65
|
+
def group_id
|
|
61
66
|
kafka[:"group.id"]
|
|
62
67
|
end
|
|
63
68
|
|
|
69
|
+
# Backwards compatible alias. Will be retired in Karafka 3.0 once additional group types
|
|
70
|
+
# (e.g. KIP-932 share groups) land.
|
|
71
|
+
alias_method :consumer_group_id, :group_id
|
|
72
|
+
|
|
64
73
|
# @return [Integer] max messages fetched in a single go
|
|
65
74
|
def max_messages
|
|
66
75
|
@topics.first.max_messages
|
|
@@ -124,7 +133,7 @@ module Karafka
|
|
|
124
133
|
inject_group_instance_id(kafka)
|
|
125
134
|
inject_client_id(kafka)
|
|
126
135
|
|
|
127
|
-
kafka[:"group.id"] ||= @
|
|
136
|
+
kafka[:"group.id"] ||= @group.id
|
|
128
137
|
kafka[:"auto.offset.reset"] ||= @topics.first.initial_offset
|
|
129
138
|
# Karafka manages the offsets based on the processing state, thus we do not rely on the
|
|
130
139
|
# rdkafka offset auto-storing
|