karafka 2.4.18 → 2.5.0
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/.github/CODEOWNERS +3 -0
- data/.github/workflows/ci.yml +59 -15
- data/.github/workflows/push.yml +35 -0
- data/.github/workflows/verify-action-pins.yml +16 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +75 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +72 -53
- data/LICENSE-COMM +2 -2
- data/README.md +1 -1
- data/Rakefile +4 -0
- data/bin/clean_kafka +43 -0
- data/bin/integrations +20 -6
- data/bin/rspecs +15 -3
- data/bin/verify_kafka_warnings +35 -0
- data/bin/verify_topics_naming +27 -0
- data/config/locales/errors.yml +5 -1
- data/config/locales/pro_errors.yml +13 -2
- data/docker-compose.yml +1 -1
- data/examples/payloads/avro/.gitkeep +0 -0
- data/examples/payloads/json/sample_set_01/enrollment_event.json +579 -0
- data/examples/payloads/json/sample_set_01/ingestion_event.json +30 -0
- data/examples/payloads/json/sample_set_01/transaction_event.json +17 -0
- data/examples/payloads/json/sample_set_01/user_event.json +11 -0
- data/karafka.gemspec +3 -8
- data/lib/karafka/active_job/current_attributes.rb +1 -1
- data/lib/karafka/active_job/job_extensions.rb +4 -1
- data/lib/karafka/admin/acl.rb +5 -1
- data/lib/karafka/admin/configs.rb +5 -1
- data/lib/karafka/admin.rb +89 -42
- data/lib/karafka/base_consumer.rb +17 -8
- data/lib/karafka/cli/base.rb +8 -2
- data/lib/karafka/cli/topics/align.rb +7 -4
- data/lib/karafka/cli/topics/base.rb +17 -0
- data/lib/karafka/cli/topics/create.rb +9 -7
- data/lib/karafka/cli/topics/delete.rb +4 -2
- data/lib/karafka/cli/topics/help.rb +39 -0
- data/lib/karafka/cli/topics/repartition.rb +4 -2
- data/lib/karafka/cli/topics.rb +10 -3
- data/lib/karafka/cli.rb +2 -0
- data/lib/karafka/connection/client.rb +39 -9
- data/lib/karafka/connection/listener.rb +24 -12
- data/lib/karafka/connection/messages_buffer.rb +1 -1
- data/lib/karafka/connection/proxy.rb +4 -1
- data/lib/karafka/constraints.rb +3 -3
- data/lib/karafka/contracts/base.rb +3 -2
- data/lib/karafka/contracts/config.rb +5 -1
- data/lib/karafka/contracts/topic.rb +1 -1
- data/lib/karafka/errors.rb +46 -2
- data/lib/karafka/helpers/async.rb +3 -1
- data/lib/karafka/helpers/interval_runner.rb +8 -0
- data/lib/karafka/instrumentation/callbacks/rebalance.rb +5 -1
- data/lib/karafka/instrumentation/logger_listener.rb +95 -32
- data/lib/karafka/instrumentation/proctitle_listener.rb +5 -1
- data/lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb +2 -2
- data/lib/karafka/instrumentation/vendors/kubernetes/base_listener.rb +17 -2
- data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +29 -6
- data/lib/karafka/instrumentation/vendors/kubernetes/swarm_liveness_listener.rb +9 -0
- data/lib/karafka/messages/builders/batch_metadata.rb +1 -1
- data/lib/karafka/pro/cleaner.rb +8 -0
- data/lib/karafka/pro/cli/parallel_segments/base.rb +89 -0
- data/lib/karafka/pro/cli/parallel_segments/collapse.rb +164 -0
- data/lib/karafka/pro/cli/parallel_segments/distribute.rb +164 -0
- data/lib/karafka/pro/cli/parallel_segments.rb +60 -0
- data/lib/karafka/pro/connection/manager.rb +5 -8
- data/lib/karafka/pro/encryption.rb +12 -1
- data/lib/karafka/pro/instrumentation/performance_tracker.rb +1 -1
- data/lib/karafka/pro/iterator/expander.rb +5 -3
- data/lib/karafka/pro/iterator/tpl_builder.rb +23 -0
- data/lib/karafka/pro/loader.rb +10 -0
- data/lib/karafka/pro/processing/coordinator.rb +4 -1
- data/lib/karafka/pro/processing/coordinators/errors_tracker.rb +32 -3
- data/lib/karafka/pro/processing/coordinators/filters_applier.rb +11 -0
- data/lib/karafka/pro/processing/filters/base.rb +10 -2
- data/lib/karafka/pro/processing/filters/expirer.rb +5 -0
- data/lib/karafka/pro/processing/filters/inline_insights_delayer.rb +2 -2
- data/lib/karafka/pro/processing/filters/virtual_limiter.rb +5 -0
- data/lib/karafka/pro/processing/parallel_segments/filters/base.rb +73 -0
- data/lib/karafka/pro/processing/parallel_segments/filters/default.rb +85 -0
- data/lib/karafka/pro/processing/parallel_segments/filters/mom.rb +66 -0
- data/lib/karafka/pro/processing/partitioner.rb +1 -13
- data/lib/karafka/pro/processing/piping/consumer.rb +13 -13
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +1 -1
- data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +1 -1
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +1 -1
- data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +1 -1
- data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +1 -1
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +1 -1
- data/lib/karafka/pro/processing/strategies/default.rb +36 -8
- data/lib/karafka/pro/processing/strategies/dlq/default.rb +15 -10
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +1 -1
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +1 -1
- data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +3 -1
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +1 -1
- data/lib/karafka/pro/processing/strategies/ftr/default.rb +1 -1
- data/lib/karafka/pro/processing/strategies/lrj/default.rb +4 -1
- data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +1 -1
- data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +1 -1
- data/lib/karafka/pro/processing/strategies/lrj/mom.rb +1 -1
- data/lib/karafka/pro/processing/virtual_partitions/distributors/balanced.rb +50 -0
- data/lib/karafka/pro/processing/virtual_partitions/distributors/base.rb +29 -0
- data/lib/karafka/pro/processing/virtual_partitions/distributors/consistent.rb +27 -0
- data/lib/karafka/pro/recurring_tasks/contracts/config.rb +8 -4
- data/lib/karafka/pro/recurring_tasks/dispatcher.rb +3 -3
- data/lib/karafka/pro/recurring_tasks/setup/config.rb +7 -2
- data/lib/karafka/pro/recurring_tasks.rb +21 -2
- data/lib/karafka/pro/routing/features/dead_letter_queue/topic.rb +1 -1
- data/lib/karafka/pro/routing/features/multiplexing/config.rb +1 -0
- data/lib/karafka/pro/routing/features/multiplexing/contracts/topic.rb +17 -0
- data/lib/karafka/pro/routing/features/multiplexing/proxy.rb +5 -2
- data/lib/karafka/pro/routing/features/multiplexing/subscription_group.rb +8 -1
- data/lib/karafka/pro/routing/features/parallel_segments/builder.rb +47 -0
- data/lib/karafka/pro/routing/features/parallel_segments/config.rb +27 -0
- data/lib/karafka/pro/routing/features/parallel_segments/consumer_group.rb +83 -0
- data/lib/karafka/pro/routing/features/parallel_segments/contracts/consumer_group.rb +49 -0
- data/lib/karafka/pro/routing/features/parallel_segments/topic.rb +43 -0
- data/lib/karafka/pro/routing/features/parallel_segments.rb +24 -0
- data/lib/karafka/pro/routing/features/patterns/pattern.rb +1 -1
- data/lib/karafka/pro/routing/features/recurring_tasks/builder.rb +2 -2
- data/lib/karafka/pro/routing/features/scheduled_messages/builder.rb +10 -6
- data/lib/karafka/pro/routing/features/swarm/contracts/routing.rb +3 -2
- data/lib/karafka/pro/routing/features/swarm.rb +4 -1
- data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +20 -2
- data/lib/karafka/pro/routing/features/virtual_partitions/contracts/topic.rb +1 -0
- data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +8 -2
- data/lib/karafka/pro/scheduled_messages/consumer.rb +61 -26
- data/lib/karafka/pro/scheduled_messages/daily_buffer.rb +9 -6
- data/lib/karafka/pro/scheduled_messages/deserializers/headers.rb +7 -1
- data/lib/karafka/pro/scheduled_messages/dispatcher.rb +2 -1
- data/lib/karafka/pro/scheduled_messages/max_epoch.rb +15 -6
- data/lib/karafka/pro/scheduled_messages/proxy.rb +15 -3
- data/lib/karafka/pro/scheduled_messages/serializer.rb +2 -4
- data/lib/karafka/pro/scheduled_messages/state.rb +20 -23
- data/lib/karafka/pro/scheduled_messages/tracker.rb +34 -8
- data/lib/karafka/pro/scheduled_messages.rb +17 -1
- data/lib/karafka/processing/coordinators_buffer.rb +1 -0
- data/lib/karafka/processing/strategies/default.rb +4 -4
- data/lib/karafka/routing/builder.rb +12 -3
- data/lib/karafka/routing/features/base/expander.rb +8 -2
- data/lib/karafka/routing/features/dead_letter_queue/contracts/topic.rb +1 -0
- data/lib/karafka/routing/subscription_group.rb +1 -1
- data/lib/karafka/runner.rb +7 -1
- data/lib/karafka/server.rb +21 -18
- data/lib/karafka/setup/attributes_map.rb +2 -0
- data/lib/karafka/setup/config.rb +40 -7
- data/lib/karafka/setup/defaults_injector.rb +26 -1
- data/lib/karafka/status.rb +6 -1
- data/lib/karafka/swarm/node.rb +31 -0
- data/lib/karafka/swarm/supervisor.rb +9 -2
- data/lib/karafka/templates/karafka.rb.erb +14 -1
- data/lib/karafka/version.rb +1 -1
- data/lib/karafka.rb +17 -9
- data/renovate.json +14 -2
- metadata +41 -40
- checksums.yaml.gz.sig +0 -0
- data/certs/cert.pem +0 -26
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
data/lib/karafka/swarm/node.rb
CHANGED
@@ -27,6 +27,18 @@ module Karafka
|
|
27
27
|
# @return [Integer] pid of the node
|
28
28
|
attr_reader :pid
|
29
29
|
|
30
|
+
# When re-creating a producer in the fork, those are not attributes we want to inherit
|
31
|
+
# from the parent process because they are updated in the fork. If user wants to take those
|
32
|
+
# from the parent process, he should redefine them by overwriting the whole producer.
|
33
|
+
SKIPPABLE_NEW_PRODUCER_ATTRIBUTES = %i[
|
34
|
+
id
|
35
|
+
kafka
|
36
|
+
logger
|
37
|
+
oauth
|
38
|
+
].freeze
|
39
|
+
|
40
|
+
private_constant :SKIPPABLE_NEW_PRODUCER_ATTRIBUTES
|
41
|
+
|
30
42
|
# @param id [Integer] number of the fork. Used for uniqueness setup for group client ids and
|
31
43
|
# other stuff where we need to know a unique reference of the fork in regards to the rest
|
32
44
|
# of them.
|
@@ -52,15 +64,32 @@ module Karafka
|
|
52
64
|
# an attempt to close it when finalized, meaning it would be kept in memory.
|
53
65
|
config.producer.close
|
54
66
|
|
67
|
+
old_producer = config.producer
|
68
|
+
old_producer_config = old_producer.config
|
69
|
+
|
55
70
|
# Supervisor producer is closed, hence we need a new one here
|
56
71
|
config.producer = ::WaterDrop::Producer.new do |p_config|
|
57
72
|
p_config.kafka = Setup::AttributesMap.producer(kafka.dup)
|
58
73
|
p_config.logger = config.logger
|
74
|
+
|
75
|
+
old_producer_config.to_h.each do |key, value|
|
76
|
+
next if SKIPPABLE_NEW_PRODUCER_ATTRIBUTES.include?(key)
|
77
|
+
|
78
|
+
p_config.public_send("#{key}=", value)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Namespaced attributes need to be migrated directly on their config node
|
82
|
+
old_producer_config.oauth.to_h.each do |key, value|
|
83
|
+
p_config.oauth.public_send("#{key}=", value)
|
84
|
+
end
|
59
85
|
end
|
60
86
|
|
61
87
|
@pid = ::Process.pid
|
62
88
|
@reader.close
|
63
89
|
|
90
|
+
# Certain features need to be reconfigured / reinitialized after fork in Pro
|
91
|
+
Pro::Loader.post_fork(config, old_producer) if Karafka.pro?
|
92
|
+
|
64
93
|
# Indicate we are alive right after start
|
65
94
|
healthy
|
66
95
|
|
@@ -69,6 +98,8 @@ module Karafka
|
|
69
98
|
monitor.instrument('swarm.node.after_fork', caller: self)
|
70
99
|
|
71
100
|
Karafka::Process.tags.add(:execution_mode, 'mode:swarm')
|
101
|
+
Karafka::Process.tags.add(:swarm_nodeid, "node:#{@id}")
|
102
|
+
|
72
103
|
Server.execution_mode = :swarm
|
73
104
|
Server.run
|
74
105
|
|
@@ -42,7 +42,10 @@ module Karafka
|
|
42
42
|
# Creates needed number of forks, installs signals and starts supervision
|
43
43
|
def run
|
44
44
|
# Validate the CLI provided options the same way as we do for the regular server
|
45
|
-
cli_contract.validate!(
|
45
|
+
cli_contract.validate!(
|
46
|
+
activity_manager.to_h,
|
47
|
+
scope: %w[swarm cli]
|
48
|
+
)
|
46
49
|
|
47
50
|
# Close producer just in case. While it should not be used, we do not want even a
|
48
51
|
# theoretical case since librdkafka is not thread-safe.
|
@@ -50,6 +53,10 @@ module Karafka
|
|
50
53
|
# producer (should not be initialized but just in case)
|
51
54
|
Karafka.producer.close
|
52
55
|
|
56
|
+
# Ensure rdkafka stuff is loaded into memory pre-fork. This will ensure, that we save
|
57
|
+
# few MB on forking as this will be already in memory.
|
58
|
+
Rdkafka::Bindings.rd_kafka_global_init
|
59
|
+
|
53
60
|
Karafka::App.warmup
|
54
61
|
|
55
62
|
manager.start
|
@@ -150,7 +157,7 @@ module Karafka
|
|
150
157
|
# Run forceful kill
|
151
158
|
manager.terminate
|
152
159
|
# And wait until linux kills them
|
153
|
-
# This prevents us from
|
160
|
+
# This prevents us from exiting forcefully with any dead child process still existing
|
154
161
|
# Since we have sent the `KILL` signal, it must die, so we can wait until all dead
|
155
162
|
sleep(supervision_sleep) until manager.stopped?
|
156
163
|
|
@@ -25,7 +25,20 @@ APP_LOADER.eager_load
|
|
25
25
|
class KarafkaApp < Karafka::App
|
26
26
|
setup do |config|
|
27
27
|
config.kafka = { 'bootstrap.servers': '127.0.0.1:9092' }
|
28
|
-
config.client_id = '
|
28
|
+
config.client_id = 'YOUR_APP_NAME'
|
29
|
+
|
30
|
+
# IMPORTANT: Customize this group_id with your application name.
|
31
|
+
# The group_id should be unique per application to properly track message consumption.
|
32
|
+
# Example: config.group_id = 'inventory_service_consumer'
|
33
|
+
#
|
34
|
+
# Note: Advanced features and custom routing configurations may define their own consumer
|
35
|
+
# groups. These should also be uniquely named per application to avoid conflicts.
|
36
|
+
# For the advanced features, subscription groups and consumer groups in your routing
|
37
|
+
# configuration, follow the same uniqueness principle.
|
38
|
+
#
|
39
|
+
# For more details on consumer groups and routing configuration, please refer to the
|
40
|
+
# Karafka documentation: https://karafka.io/docs
|
41
|
+
config.group_id = 'YOUR_APP_NAME_consumer'
|
29
42
|
<% if rails? -%>
|
30
43
|
# Recreate consumers with each batch. This will allow Rails code reload to work in the
|
31
44
|
# development mode. Otherwise Karafka process would not be aware of code changes
|
data/lib/karafka/version.rb
CHANGED
data/lib/karafka.rb
CHANGED
@@ -16,6 +16,7 @@
|
|
16
16
|
singleton
|
17
17
|
digest
|
18
18
|
zeitwerk
|
19
|
+
logger
|
19
20
|
].each(&method(:require))
|
20
21
|
|
21
22
|
# Karafka framework main namespace
|
@@ -65,16 +66,23 @@ module Karafka
|
|
65
66
|
return @root
|
66
67
|
end
|
67
68
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
69
|
+
if defined?(::Bundler)
|
70
|
+
# By default we infer the project root from bundler.
|
71
|
+
# We cannot use the BUNDLE_GEMFILE env directly because it may be altered by things like
|
72
|
+
# ruby-lsp. Instead we always fallback to the most outer Gemfile. In most of the cases, it
|
73
|
+
# won't matter but in case of some automatic setup alterations like ruby-lsp, the location
|
74
|
+
# from which the project starts may not match the original Gemfile.
|
75
|
+
@root = Pathname.new(
|
76
|
+
File.dirname(
|
77
|
+
Bundler.with_unbundled_env { Bundler.default_gemfile }
|
78
|
+
)
|
76
79
|
)
|
77
|
-
|
80
|
+
else
|
81
|
+
# Fallback when Bundler is not available: use current directory
|
82
|
+
@root = Pathname.new(Dir.pwd)
|
83
|
+
end
|
84
|
+
|
85
|
+
@root
|
78
86
|
end
|
79
87
|
|
80
88
|
# @return [Pathname] path to Karafka gem root core
|
data/renovate.json
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
{
|
2
2
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
3
3
|
"extends": [
|
4
|
-
|
4
|
+
"config:recommended"
|
5
5
|
],
|
6
6
|
"ignorePaths": [
|
7
|
-
|
7
|
+
"spec/integrations"
|
8
|
+
],
|
9
|
+
"github-actions": {
|
10
|
+
"enabled": true,
|
11
|
+
"pinDigests": true
|
12
|
+
},
|
13
|
+
"packageRules": [
|
14
|
+
{
|
15
|
+
"matchManagers": [
|
16
|
+
"github-actions"
|
17
|
+
],
|
18
|
+
"minimumReleaseAge": "7 days"
|
19
|
+
}
|
8
20
|
]
|
9
21
|
}
|
metadata
CHANGED
@@ -1,40 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maciej Mensfeld
|
8
8
|
bindir: bin
|
9
|
-
cert_chain:
|
10
|
-
-
|
11
|
-
-----BEGIN CERTIFICATE-----
|
12
|
-
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
13
|
-
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
14
|
-
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
15
|
-
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
16
|
-
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
17
|
-
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
18
|
-
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
19
|
-
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
20
|
-
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
21
|
-
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
22
|
-
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
23
|
-
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
24
|
-
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
25
|
-
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
26
|
-
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
27
|
-
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
28
|
-
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
29
|
-
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
30
|
-
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
31
|
-
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
32
|
-
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
33
|
-
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
34
|
-
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
35
|
-
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
36
|
-
-----END CERTIFICATE-----
|
37
|
-
date: 2025-04-09 00:00:00.000000000 Z
|
9
|
+
cert_chain: []
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
38
11
|
dependencies:
|
39
12
|
- !ruby/object:Gem::Dependency
|
40
13
|
name: base64
|
@@ -56,41 +29,41 @@ dependencies:
|
|
56
29
|
requirements:
|
57
30
|
- - ">="
|
58
31
|
- !ruby/object:Gem::Version
|
59
|
-
version: 2.
|
32
|
+
version: 2.5.2
|
60
33
|
- - "<"
|
61
34
|
- !ruby/object:Gem::Version
|
62
|
-
version: 2.
|
35
|
+
version: 2.6.0
|
63
36
|
type: :runtime
|
64
37
|
prerelease: false
|
65
38
|
version_requirements: !ruby/object:Gem::Requirement
|
66
39
|
requirements:
|
67
40
|
- - ">="
|
68
41
|
- !ruby/object:Gem::Version
|
69
|
-
version: 2.
|
42
|
+
version: 2.5.2
|
70
43
|
- - "<"
|
71
44
|
- !ruby/object:Gem::Version
|
72
|
-
version: 2.
|
45
|
+
version: 2.6.0
|
73
46
|
- !ruby/object:Gem::Dependency
|
74
47
|
name: karafka-rdkafka
|
75
48
|
requirement: !ruby/object:Gem::Requirement
|
76
49
|
requirements:
|
77
50
|
- - ">="
|
78
51
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
52
|
+
version: 0.19.5
|
80
53
|
type: :runtime
|
81
54
|
prerelease: false
|
82
55
|
version_requirements: !ruby/object:Gem::Requirement
|
83
56
|
requirements:
|
84
57
|
- - ">="
|
85
58
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0.
|
59
|
+
version: 0.19.5
|
87
60
|
- !ruby/object:Gem::Dependency
|
88
61
|
name: waterdrop
|
89
62
|
requirement: !ruby/object:Gem::Requirement
|
90
63
|
requirements:
|
91
64
|
- - ">="
|
92
65
|
- !ruby/object:Gem::Version
|
93
|
-
version: 2.
|
66
|
+
version: 2.8.3
|
94
67
|
- - "<"
|
95
68
|
- !ruby/object:Gem::Version
|
96
69
|
version: 3.0.0
|
@@ -100,7 +73,7 @@ dependencies:
|
|
100
73
|
requirements:
|
101
74
|
- - ">="
|
102
75
|
- !ruby/object:Gem::Version
|
103
|
-
version: 2.
|
76
|
+
version: 2.8.3
|
104
77
|
- - "<"
|
105
78
|
- !ruby/object:Gem::Version
|
106
79
|
version: 3.0.0
|
@@ -133,10 +106,13 @@ files:
|
|
133
106
|
- ".coditsu/ci.yml"
|
134
107
|
- ".console_irbrc"
|
135
108
|
- ".diffend.yml"
|
109
|
+
- ".github/CODEOWNERS"
|
136
110
|
- ".github/FUNDING.yml"
|
137
111
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
138
112
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
139
113
|
- ".github/workflows/ci.yml"
|
114
|
+
- ".github/workflows/push.yml"
|
115
|
+
- ".github/workflows/verify-action-pins.yml"
|
140
116
|
- ".gitignore"
|
141
117
|
- ".rspec"
|
142
118
|
- ".ruby-gemset"
|
@@ -150,8 +126,10 @@ files:
|
|
150
126
|
- LICENSE-COMM
|
151
127
|
- LICENSE-LGPL
|
152
128
|
- README.md
|
129
|
+
- Rakefile
|
153
130
|
- SECURITY.md
|
154
131
|
- bin/benchmarks
|
132
|
+
- bin/clean_kafka
|
155
133
|
- bin/create_token
|
156
134
|
- bin/integrations
|
157
135
|
- bin/karafka
|
@@ -160,13 +138,19 @@ files:
|
|
160
138
|
- bin/scenario
|
161
139
|
- bin/stress_many
|
162
140
|
- bin/stress_one
|
141
|
+
- bin/verify_kafka_warnings
|
163
142
|
- bin/verify_license_integrity
|
143
|
+
- bin/verify_topics_naming
|
164
144
|
- bin/wait_for_kafka
|
165
|
-
- certs/cert.pem
|
166
145
|
- certs/karafka-pro.pem
|
167
146
|
- config/locales/errors.yml
|
168
147
|
- config/locales/pro_errors.yml
|
169
148
|
- docker-compose.yml
|
149
|
+
- examples/payloads/avro/.gitkeep
|
150
|
+
- examples/payloads/json/sample_set_01/enrollment_event.json
|
151
|
+
- examples/payloads/json/sample_set_01/ingestion_event.json
|
152
|
+
- examples/payloads/json/sample_set_01/transaction_event.json
|
153
|
+
- examples/payloads/json/sample_set_01/user_event.json
|
170
154
|
- karafka.gemspec
|
171
155
|
- lib/active_job/karafka.rb
|
172
156
|
- lib/active_job/queue_adapters/karafka_adapter.rb
|
@@ -198,6 +182,7 @@ files:
|
|
198
182
|
- lib/karafka/cli/topics/base.rb
|
199
183
|
- lib/karafka/cli/topics/create.rb
|
200
184
|
- lib/karafka/cli/topics/delete.rb
|
185
|
+
- lib/karafka/cli/topics/help.rb
|
201
186
|
- lib/karafka/cli/topics/migrate.rb
|
202
187
|
- lib/karafka/cli/topics/plan.rb
|
203
188
|
- lib/karafka/cli/topics/repartition.rb
|
@@ -275,6 +260,10 @@ files:
|
|
275
260
|
- lib/karafka/pro/cleaner/messages/message.rb
|
276
261
|
- lib/karafka/pro/cleaner/messages/messages.rb
|
277
262
|
- lib/karafka/pro/cleaner/messages/metadata.rb
|
263
|
+
- lib/karafka/pro/cli/parallel_segments.rb
|
264
|
+
- lib/karafka/pro/cli/parallel_segments/base.rb
|
265
|
+
- lib/karafka/pro/cli/parallel_segments/collapse.rb
|
266
|
+
- lib/karafka/pro/cli/parallel_segments/distribute.rb
|
278
267
|
- lib/karafka/pro/connection/manager.rb
|
279
268
|
- lib/karafka/pro/connection/multiplexing/listener.rb
|
280
269
|
- lib/karafka/pro/contracts/base.rb
|
@@ -316,6 +305,9 @@ files:
|
|
316
305
|
- lib/karafka/pro/processing/offset_metadata/consumer.rb
|
317
306
|
- lib/karafka/pro/processing/offset_metadata/fetcher.rb
|
318
307
|
- lib/karafka/pro/processing/offset_metadata/listener.rb
|
308
|
+
- lib/karafka/pro/processing/parallel_segments/filters/base.rb
|
309
|
+
- lib/karafka/pro/processing/parallel_segments/filters/default.rb
|
310
|
+
- lib/karafka/pro/processing/parallel_segments/filters/mom.rb
|
319
311
|
- lib/karafka/pro/processing/partitioner.rb
|
320
312
|
- lib/karafka/pro/processing/periodic_job/consumer.rb
|
321
313
|
- lib/karafka/pro/processing/piping/consumer.rb
|
@@ -373,6 +365,9 @@ files:
|
|
373
365
|
- lib/karafka/pro/processing/strategies/vp/default.rb
|
374
366
|
- lib/karafka/pro/processing/strategy_selector.rb
|
375
367
|
- lib/karafka/pro/processing/subscription_groups_coordinator.rb
|
368
|
+
- lib/karafka/pro/processing/virtual_partitions/distributors/balanced.rb
|
369
|
+
- lib/karafka/pro/processing/virtual_partitions/distributors/base.rb
|
370
|
+
- lib/karafka/pro/processing/virtual_partitions/distributors/consistent.rb
|
376
371
|
- lib/karafka/pro/recurring_tasks.rb
|
377
372
|
- lib/karafka/pro/recurring_tasks/consumer.rb
|
378
373
|
- lib/karafka/pro/recurring_tasks/contracts/config.rb
|
@@ -436,6 +431,12 @@ files:
|
|
436
431
|
- lib/karafka/pro/routing/features/offset_metadata/config.rb
|
437
432
|
- lib/karafka/pro/routing/features/offset_metadata/contracts/topic.rb
|
438
433
|
- lib/karafka/pro/routing/features/offset_metadata/topic.rb
|
434
|
+
- lib/karafka/pro/routing/features/parallel_segments.rb
|
435
|
+
- lib/karafka/pro/routing/features/parallel_segments/builder.rb
|
436
|
+
- lib/karafka/pro/routing/features/parallel_segments/config.rb
|
437
|
+
- lib/karafka/pro/routing/features/parallel_segments/consumer_group.rb
|
438
|
+
- lib/karafka/pro/routing/features/parallel_segments/contracts/consumer_group.rb
|
439
|
+
- lib/karafka/pro/routing/features/parallel_segments/topic.rb
|
439
440
|
- lib/karafka/pro/routing/features/patterns.rb
|
440
441
|
- lib/karafka/pro/routing/features/patterns/builder.rb
|
441
442
|
- lib/karafka/pro/routing/features/patterns/config.rb
|
@@ -619,7 +620,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
619
620
|
- !ruby/object:Gem::Version
|
620
621
|
version: '0'
|
621
622
|
requirements: []
|
622
|
-
rubygems_version: 3.6.
|
623
|
+
rubygems_version: 3.6.7
|
623
624
|
specification_version: 4
|
624
625
|
summary: Karafka is Ruby and Rails efficient Kafka processing framework.
|
625
626
|
test_files: []
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data/certs/cert.pem
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
3
|
-
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
4
|
-
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
5
|
-
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
6
|
-
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
7
|
-
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
8
|
-
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
9
|
-
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
10
|
-
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
11
|
-
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
12
|
-
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
13
|
-
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
14
|
-
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
15
|
-
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
16
|
-
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
17
|
-
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
18
|
-
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
19
|
-
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
20
|
-
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
21
|
-
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
22
|
-
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
23
|
-
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
24
|
-
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
25
|
-
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
26
|
-
-----END CERTIFICATE-----
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
Binary file
|