karafka 2.0.37 → 2.0.39
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
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +34 -0
- data/Gemfile.lock +7 -7
- data/README.md +1 -1
- data/bin/integrations +1 -1
- data/config/locales/errors.yml +0 -7
- data/config/locales/pro_errors.yml +18 -0
- data/lib/karafka/active_job/consumer.rb +22 -7
- data/lib/karafka/admin.rb +46 -14
- data/lib/karafka/base_consumer.rb +35 -55
- data/lib/karafka/connection/listener.rb +15 -10
- data/lib/karafka/errors.rb +0 -3
- data/lib/karafka/instrumentation/logger_listener.rb +44 -3
- data/lib/karafka/instrumentation/notifications.rb +7 -0
- data/lib/karafka/pro/active_job/consumer.rb +10 -5
- data/lib/karafka/pro/processing/coordinator.rb +13 -4
- data/lib/karafka/pro/processing/filters/base.rb +61 -0
- data/lib/karafka/pro/processing/filters/delayer.rb +70 -0
- data/lib/karafka/pro/processing/filters/expirer.rb +51 -0
- data/lib/karafka/pro/processing/filters/throttler.rb +84 -0
- data/lib/karafka/pro/processing/filters_applier.rb +100 -0
- data/lib/karafka/pro/processing/jobs_builder.rb +7 -3
- data/lib/karafka/pro/processing/scheduler.rb +24 -7
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +68 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +74 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +72 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +76 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +62 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +68 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +64 -0
- data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +69 -0
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb +38 -0
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +64 -0
- data/lib/karafka/pro/processing/strategies/aj/ftr_mom.rb +38 -0
- data/lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb +58 -0
- data/lib/karafka/pro/processing/strategies/{dlq_lrj_vp.rb → aj/lrj_mom.rb} +14 -13
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +77 -0
- data/lib/karafka/pro/processing/strategies/aj/mom.rb +36 -0
- data/lib/karafka/pro/processing/strategies/aj/mom_vp.rb +52 -0
- data/lib/karafka/pro/processing/strategies/dlq/default.rb +131 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr.rb +61 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +75 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +74 -0
- data/lib/karafka/pro/processing/strategies/{mom.rb → dlq/ftr_lrj_vp.rb} +16 -19
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +73 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +39 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +63 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +66 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +38 -0
- data/lib/karafka/pro/processing/strategies/dlq/mom.rb +67 -0
- data/lib/karafka/pro/processing/strategies/dlq/vp.rb +39 -0
- data/lib/karafka/pro/processing/strategies/ftr/default.rb +104 -0
- data/lib/karafka/pro/processing/strategies/ftr/vp.rb +40 -0
- data/lib/karafka/pro/processing/strategies/lrj/default.rb +85 -0
- data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +69 -0
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +67 -0
- data/lib/karafka/pro/processing/strategies/{vp.rb → lrj/ftr_vp.rb} +15 -13
- data/lib/karafka/pro/processing/strategies/lrj/mom.rb +78 -0
- data/lib/karafka/pro/processing/strategies/{aj_lrj_mom.rb → lrj/vp.rb} +13 -12
- data/lib/karafka/pro/processing/strategies/mom/default.rb +46 -0
- data/lib/karafka/pro/processing/strategies/mom/ftr.rb +53 -0
- data/lib/karafka/pro/processing/strategies/vp/default.rb +53 -0
- data/lib/karafka/pro/processing/{strategies/lrj_vp.rb → strategies.rb} +1 -13
- data/lib/karafka/pro/processing/strategy_selector.rb +44 -18
- data/lib/karafka/pro/{processing/strategies/aj_mom.rb → routing/features/delaying/config.rb} +7 -13
- data/lib/karafka/pro/routing/features/delaying/contract.rb +38 -0
- data/lib/karafka/pro/routing/features/delaying/topic.rb +59 -0
- data/lib/karafka/pro/routing/features/delaying.rb +29 -0
- data/lib/karafka/pro/routing/features/expiring/config.rb +27 -0
- data/lib/karafka/pro/routing/features/expiring/contract.rb +38 -0
- data/lib/karafka/pro/routing/features/expiring/topic.rb +59 -0
- data/lib/karafka/pro/routing/features/expiring.rb +27 -0
- data/lib/karafka/pro/routing/features/filtering/config.rb +40 -0
- data/lib/karafka/pro/routing/features/filtering/contract.rb +41 -0
- data/lib/karafka/pro/routing/features/filtering/topic.rb +51 -0
- data/lib/karafka/pro/routing/features/filtering.rb +27 -0
- data/lib/karafka/pro/routing/features/long_running_job/contract.rb +1 -1
- data/lib/karafka/pro/routing/features/throttling/config.rb +32 -0
- data/lib/karafka/pro/routing/features/throttling/contract.rb +41 -0
- data/lib/karafka/pro/routing/features/throttling/topic.rb +69 -0
- data/lib/karafka/pro/routing/features/throttling.rb +30 -0
- data/lib/karafka/processing/coordinator.rb +60 -30
- data/lib/karafka/processing/coordinators_buffer.rb +5 -1
- data/lib/karafka/processing/executor.rb +23 -16
- data/lib/karafka/processing/executors_buffer.rb +10 -26
- data/lib/karafka/processing/jobs/consume.rb +2 -4
- data/lib/karafka/processing/jobs/idle.rb +24 -0
- data/lib/karafka/processing/jobs_builder.rb +2 -3
- data/lib/karafka/processing/result.rb +5 -0
- data/lib/karafka/processing/strategies/aj_dlq_mom.rb +1 -1
- data/lib/karafka/processing/strategies/base.rb +5 -0
- data/lib/karafka/processing/strategies/default.rb +50 -0
- data/lib/karafka/processing/strategies/dlq.rb +13 -4
- data/lib/karafka/processing/strategies/dlq_mom.rb +8 -3
- data/lib/karafka/processing/strategy_selector.rb +27 -10
- data/lib/karafka/version.rb +1 -1
- data/renovate.json +6 -0
- data.tar.gz.sig +0 -0
- metadata +66 -22
- metadata.gz.sig +0 -0
- data/lib/karafka/pro/processing/strategies/aj_dlq_lrj_mom.rb +0 -42
- data/lib/karafka/pro/processing/strategies/aj_dlq_lrj_mom_vp.rb +0 -70
- data/lib/karafka/pro/processing/strategies/aj_dlq_mom.rb +0 -62
- data/lib/karafka/pro/processing/strategies/aj_dlq_mom_vp.rb +0 -68
- data/lib/karafka/pro/processing/strategies/aj_lrj_mom_vp.rb +0 -75
- data/lib/karafka/pro/processing/strategies/aj_mom_vp.rb +0 -62
- data/lib/karafka/pro/processing/strategies/dlq.rb +0 -120
- data/lib/karafka/pro/processing/strategies/dlq_lrj.rb +0 -65
- data/lib/karafka/pro/processing/strategies/dlq_lrj_mom.rb +0 -62
- data/lib/karafka/pro/processing/strategies/dlq_mom.rb +0 -62
- data/lib/karafka/pro/processing/strategies/dlq_vp.rb +0 -37
- data/lib/karafka/pro/processing/strategies/lrj.rb +0 -83
- data/lib/karafka/pro/processing/strategies/lrj_mom.rb +0 -73
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# This Karafka component is a Pro component under a commercial license.
|
|
4
|
-
# This Karafka component is NOT licensed under LGPL.
|
|
5
|
-
#
|
|
6
|
-
# All of the commercial components are present in the lib/karafka/pro directory of this
|
|
7
|
-
# repository and their usage requires commercial license agreement.
|
|
8
|
-
#
|
|
9
|
-
# Karafka has also commercial-friendly license, commercial support and commercial components.
|
|
10
|
-
#
|
|
11
|
-
# By sending a pull request to the pro components, you are agreeing to transfer the copyright of
|
|
12
|
-
# your code to Maciej Mensfeld.
|
|
13
|
-
|
|
14
|
-
module Karafka
|
|
15
|
-
module Pro
|
|
16
|
-
module Processing
|
|
17
|
-
module Strategies
|
|
18
|
-
# Long-Running Job enabled
|
|
19
|
-
module Lrj
|
|
20
|
-
include Default
|
|
21
|
-
|
|
22
|
-
# Pause for tops 31 years
|
|
23
|
-
MAX_PAUSE_TIME = 1_000_000_000_000
|
|
24
|
-
|
|
25
|
-
# Features for this strategy
|
|
26
|
-
FEATURES = %i[
|
|
27
|
-
long_running_job
|
|
28
|
-
].freeze
|
|
29
|
-
|
|
30
|
-
# We always need to pause prior to doing any jobs for LRJ
|
|
31
|
-
def handle_before_enqueue
|
|
32
|
-
# This ensures that when running LRJ with VP, things operate as expected run only once
|
|
33
|
-
# for all the virtual partitions collectively
|
|
34
|
-
coordinator.on_enqueued do
|
|
35
|
-
# Pause at the first message in a batch. That way in case of a crash, we will not
|
|
36
|
-
# loose any messages.
|
|
37
|
-
#
|
|
38
|
-
# For VP it applies the same way and since VP cannot be used with MOM we should not
|
|
39
|
-
# have any edge cases here.
|
|
40
|
-
pause(coordinator.seek_offset, MAX_PAUSE_TIME, false)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# LRJ standard flow after consumption
|
|
45
|
-
def handle_after_consume
|
|
46
|
-
coordinator.on_finished do |last_group_message|
|
|
47
|
-
if coordinator.success?
|
|
48
|
-
coordinator.pause_tracker.reset
|
|
49
|
-
|
|
50
|
-
return if coordinator.manual_pause?
|
|
51
|
-
|
|
52
|
-
mark_as_consumed(last_group_message) unless revoked?
|
|
53
|
-
seek(coordinator.seek_offset) unless revoked?
|
|
54
|
-
|
|
55
|
-
resume
|
|
56
|
-
else
|
|
57
|
-
# If processing failed, we need to pause
|
|
58
|
-
# For long running job this will overwrite the default never-ending pause and will
|
|
59
|
-
# cause the processing to keep going after the error backoff
|
|
60
|
-
retry_after_pause
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# We do not un-pause on revokations for LRJ
|
|
66
|
-
def handle_revoked
|
|
67
|
-
coordinator.on_revoked do
|
|
68
|
-
# We do not want to resume on revocation in case of a LRJ.
|
|
69
|
-
# For LRJ we resume after the successful processing or do a backoff pause in case of
|
|
70
|
-
# a failure. Double non-blocking resume could cause problems in coordination.
|
|
71
|
-
coordinator.revoke
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
Karafka.monitor.instrument('consumer.revoke', caller: self)
|
|
75
|
-
Karafka.monitor.instrument('consumer.revoked', caller: self) do
|
|
76
|
-
revoked
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# This Karafka component is a Pro component under a commercial license.
|
|
4
|
-
# This Karafka component is NOT licensed under LGPL.
|
|
5
|
-
#
|
|
6
|
-
# All of the commercial components are present in the lib/karafka/pro directory of this
|
|
7
|
-
# repository and their usage requires commercial license agreement.
|
|
8
|
-
#
|
|
9
|
-
# Karafka has also commercial-friendly license, commercial support and commercial components.
|
|
10
|
-
#
|
|
11
|
-
# By sending a pull request to the pro components, you are agreeing to transfer the copyright of
|
|
12
|
-
# your code to Maciej Mensfeld.
|
|
13
|
-
|
|
14
|
-
module Karafka
|
|
15
|
-
module Pro
|
|
16
|
-
module Processing
|
|
17
|
-
module Strategies
|
|
18
|
-
# Long-Running Job enabled
|
|
19
|
-
# Manual offset management enabled
|
|
20
|
-
module LrjMom
|
|
21
|
-
include Default
|
|
22
|
-
|
|
23
|
-
# Features for this strategy
|
|
24
|
-
FEATURES = %i[
|
|
25
|
-
long_running_job
|
|
26
|
-
manual_offset_management
|
|
27
|
-
].freeze
|
|
28
|
-
|
|
29
|
-
# We always need to pause prior to doing any jobs for LRJ
|
|
30
|
-
def handle_before_enqueue
|
|
31
|
-
# This ensures that when running LRJ with VP, things operate as expected run only once
|
|
32
|
-
# for all the virtual partitions collectively
|
|
33
|
-
coordinator.on_enqueued do
|
|
34
|
-
# Pause at the first message in a batch. That way in case of a crash, we will not
|
|
35
|
-
# loose any messages.
|
|
36
|
-
#
|
|
37
|
-
# For VP it applies the same way and since VP cannot be used with MOM we should not
|
|
38
|
-
# have any edge cases here.
|
|
39
|
-
pause(coordinator.seek_offset, Lrj::MAX_PAUSE_TIME, false)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# No offset management, aside from that typical LRJ
|
|
44
|
-
def handle_after_consume
|
|
45
|
-
coordinator.on_finished do
|
|
46
|
-
if coordinator.success?
|
|
47
|
-
coordinator.pause_tracker.reset
|
|
48
|
-
|
|
49
|
-
seek(coordinator.seek_offset) unless revoked?
|
|
50
|
-
|
|
51
|
-
resume
|
|
52
|
-
else
|
|
53
|
-
retry_after_pause
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# We do not un-pause on revokations for LRJ
|
|
59
|
-
def handle_revoked
|
|
60
|
-
coordinator.on_revoked do
|
|
61
|
-
coordinator.revoke
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
Karafka.monitor.instrument('consumer.revoke', caller: self)
|
|
65
|
-
Karafka.monitor.instrument('consumer.revoked', caller: self) do
|
|
66
|
-
revoked
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|