karafka 2.0.0 → 2.1.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
- checksums.yaml.gz.sig +0 -0
- data/.github/FUNDING.yml +1 -0
- data/.github/workflows/ci.yml +40 -16
- data/.rspec +4 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +459 -796
- data/Gemfile +3 -2
- data/Gemfile.lock +44 -32
- data/LICENSE +1 -1
- data/README.md +22 -17
- data/bin/integrations +86 -26
- data/bin/karafka +1 -13
- data/bin/rspecs +6 -0
- data/bin/verify_license_integrity +37 -0
- data/certs/cert_chain.pem +26 -0
- data/config/{errors.yml → locales/errors.yml} +34 -6
- data/config/locales/pro_errors.yml +34 -0
- data/docker-compose.yml +4 -30
- data/karafka.gemspec +17 -10
- data/lib/active_job/karafka.rb +3 -7
- data/lib/active_job/queue_adapters/karafka_adapter.rb +7 -1
- data/lib/karafka/active_job/consumer.rb +29 -6
- data/lib/karafka/active_job/current_attributes/loading.rb +36 -0
- data/lib/karafka/active_job/current_attributes/persistence.rb +28 -0
- data/lib/karafka/active_job/current_attributes.rb +42 -0
- data/lib/karafka/active_job/dispatcher.rb +34 -3
- data/lib/karafka/active_job/job_options_contract.rb +13 -2
- data/lib/karafka/admin.rb +246 -0
- data/lib/karafka/app.rb +30 -7
- data/lib/karafka/base_consumer.rb +124 -82
- data/lib/karafka/cli/base.rb +20 -0
- data/lib/karafka/cli/console.rb +13 -8
- data/lib/karafka/cli/info.rb +3 -2
- data/lib/karafka/cli/server.rb +55 -8
- data/lib/karafka/cli/topics.rb +146 -0
- data/lib/karafka/connection/client.rb +118 -61
- data/lib/karafka/connection/consumer_group_coordinator.rb +48 -0
- data/lib/karafka/connection/listener.rb +78 -30
- data/lib/karafka/connection/listeners_batch.rb +18 -2
- data/lib/karafka/connection/rebalance_manager.rb +3 -0
- data/lib/karafka/contracts/config.rb +1 -1
- data/lib/karafka/contracts/consumer_group.rb +22 -9
- data/lib/karafka/contracts/server_cli_options.rb +71 -11
- data/lib/karafka/contracts/topic.rb +65 -0
- data/lib/karafka/contracts.rb +1 -1
- data/lib/karafka/embedded.rb +36 -0
- data/lib/karafka/errors.rb +6 -4
- data/lib/karafka/helpers/colorize.rb +6 -0
- data/lib/karafka/instrumentation/callbacks/error.rb +3 -4
- data/lib/karafka/instrumentation/callbacks/statistics.rb +14 -4
- data/lib/karafka/instrumentation/logger_listener.rb +151 -22
- data/lib/karafka/instrumentation/notifications.rb +26 -7
- data/lib/karafka/instrumentation/proctitle_listener.rb +7 -16
- data/lib/karafka/instrumentation/vendors/datadog/dashboard.json +1 -1
- data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +153 -0
- data/lib/karafka/instrumentation/vendors/datadog/{listener.rb → metrics_listener.rb} +62 -35
- data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +166 -0
- data/lib/karafka/licenser.rb +53 -50
- data/lib/karafka/messages/builders/batch_metadata.rb +8 -8
- data/lib/karafka/messages/builders/messages.rb +6 -2
- data/lib/karafka/messages/message.rb +14 -2
- data/lib/karafka/messages/messages.rb +5 -0
- data/lib/karafka/messages/parser.rb +14 -0
- data/lib/karafka/patches/rdkafka/bindings.rb +132 -0
- data/lib/karafka/pro/active_job/consumer.rb +10 -9
- data/lib/karafka/pro/active_job/dispatcher.rb +28 -3
- data/lib/karafka/pro/active_job/job_options_contract.rb +16 -3
- data/lib/karafka/pro/encryption/cipher.rb +58 -0
- data/lib/karafka/pro/encryption/contracts/config.rb +79 -0
- data/lib/karafka/pro/encryption/errors.rb +24 -0
- data/lib/karafka/pro/encryption/messages/middleware.rb +46 -0
- data/lib/karafka/pro/encryption/messages/parser.rb +56 -0
- data/lib/karafka/pro/encryption/setup/config.rb +48 -0
- data/lib/karafka/pro/encryption.rb +47 -0
- data/lib/karafka/pro/iterator.rb +253 -0
- data/lib/karafka/pro/loader.rb +52 -26
- data/lib/karafka/pro/performance_tracker.rb +10 -6
- data/lib/karafka/pro/processing/collapser.rb +62 -0
- data/lib/karafka/pro/processing/coordinator.rb +92 -16
- 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/virtual_limiter.rb +52 -0
- data/lib/karafka/pro/processing/filters_applier.rb +104 -0
- data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +7 -5
- data/lib/karafka/pro/processing/jobs/revoked_non_blocking.rb +37 -0
- data/lib/karafka/pro/processing/jobs_builder.rb +22 -4
- data/lib/karafka/pro/processing/partitioner.rb +33 -24
- data/lib/karafka/pro/processing/scheduler.rb +27 -8
- 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 +64 -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/aj/lrj_mom.rb +37 -0
- data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +79 -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/base.rb +26 -0
- data/lib/karafka/pro/processing/strategies/default.rb +105 -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 +71 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +43 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +41 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +69 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +41 -0
- data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +40 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +63 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +63 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb +36 -0
- data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +39 -0
- data/lib/karafka/pro/processing/strategies/dlq/mom.rb +68 -0
- data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +37 -0
- data/lib/karafka/pro/processing/strategies/dlq/vp.rb +40 -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 +87 -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/lrj/ftr_mom_vp.rb +40 -0
- data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +39 -0
- data/lib/karafka/pro/processing/strategies/lrj/mom.rb +80 -0
- data/lib/karafka/pro/processing/strategies/lrj/mom_vp.rb +38 -0
- data/lib/karafka/pro/processing/strategies/lrj/vp.rb +36 -0
- 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/mom/ftr_vp.rb +37 -0
- data/lib/karafka/pro/processing/strategies/mom/vp.rb +35 -0
- data/lib/karafka/pro/processing/strategies/vp/default.rb +104 -0
- data/lib/karafka/pro/{contracts/base.rb → processing/strategies.rb} +6 -5
- data/lib/karafka/pro/processing/strategy_selector.rb +84 -0
- data/lib/karafka/pro/processing/virtual_offset_manager.rb +147 -0
- data/lib/karafka/pro/routing/features/base.rb +24 -0
- data/lib/karafka/pro/routing/features/dead_letter_queue/contract.rb +50 -0
- data/lib/karafka/pro/routing/features/dead_letter_queue.rb +27 -0
- data/lib/karafka/pro/routing/{builder_extensions.rb → features/delaying/config.rb} +8 -11
- 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/config.rb +28 -0
- data/lib/karafka/pro/routing/features/long_running_job/contract.rb +37 -0
- data/lib/karafka/pro/routing/features/long_running_job/topic.rb +42 -0
- data/lib/karafka/pro/routing/features/long_running_job.rb +28 -0
- 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/pro/routing/features/virtual_partitions/config.rb +30 -0
- data/lib/karafka/pro/routing/features/virtual_partitions/contract.rb +52 -0
- data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +56 -0
- data/lib/karafka/pro/routing/features/virtual_partitions.rb +27 -0
- data/lib/karafka/process.rb +23 -8
- data/lib/karafka/processing/coordinator.rb +102 -23
- data/lib/karafka/processing/coordinators_buffer.rb +5 -1
- data/lib/karafka/processing/executor.rb +51 -21
- data/lib/karafka/processing/executors_buffer.rb +10 -26
- data/lib/karafka/processing/jobs/base.rb +6 -2
- data/lib/karafka/processing/jobs/consume.rb +8 -5
- data/lib/karafka/processing/jobs/idle.rb +24 -0
- data/lib/karafka/processing/jobs_builder.rb +2 -3
- data/lib/karafka/processing/jobs_queue.rb +14 -8
- data/lib/karafka/processing/partitioner.rb +3 -1
- data/lib/karafka/processing/result.rb +14 -1
- data/lib/karafka/processing/strategies/aj_dlq_mom.rb +44 -0
- data/lib/karafka/processing/strategies/aj_mom.rb +21 -0
- data/lib/karafka/processing/strategies/base.rb +52 -0
- data/lib/karafka/processing/strategies/default.rb +142 -0
- data/lib/karafka/processing/strategies/dlq.rb +88 -0
- data/lib/karafka/processing/strategies/dlq_mom.rb +49 -0
- data/lib/karafka/processing/strategies/mom.rb +29 -0
- data/lib/karafka/processing/strategy_selector.rb +47 -0
- data/lib/karafka/processing/worker.rb +8 -3
- data/lib/karafka/railtie.rb +24 -12
- data/lib/karafka/routing/activity_manager.rb +84 -0
- data/lib/karafka/routing/builder.rb +20 -0
- data/lib/karafka/routing/consumer_group.rb +38 -4
- data/lib/karafka/routing/consumer_mapper.rb +0 -10
- data/lib/karafka/routing/features/active_job/builder.rb +33 -0
- data/lib/karafka/routing/features/active_job/config.rb +15 -0
- data/lib/karafka/routing/features/active_job/contract.rb +41 -0
- data/lib/karafka/routing/features/active_job/topic.rb +33 -0
- data/lib/karafka/routing/features/active_job.rb +13 -0
- data/lib/karafka/routing/features/base/expander.rb +53 -0
- data/lib/karafka/routing/features/base.rb +34 -0
- data/lib/karafka/routing/features/dead_letter_queue/config.rb +19 -0
- data/lib/karafka/routing/features/dead_letter_queue/contract.rb +42 -0
- data/lib/karafka/routing/features/dead_letter_queue/topic.rb +41 -0
- data/lib/karafka/routing/features/dead_letter_queue.rb +16 -0
- data/lib/karafka/routing/features/declaratives/config.rb +18 -0
- data/lib/karafka/routing/features/declaratives/contract.rb +30 -0
- data/lib/karafka/routing/features/declaratives/topic.rb +44 -0
- data/lib/karafka/routing/features/declaratives.rb +14 -0
- data/lib/karafka/routing/features/manual_offset_management/config.rb +15 -0
- data/lib/karafka/routing/features/manual_offset_management/contract.rb +24 -0
- data/lib/karafka/routing/features/manual_offset_management/topic.rb +35 -0
- data/lib/karafka/routing/features/manual_offset_management.rb +18 -0
- data/lib/karafka/routing/proxy.rb +18 -20
- data/lib/karafka/routing/router.rb +27 -2
- data/lib/karafka/routing/subscription_group.rb +43 -5
- data/lib/karafka/routing/subscription_groups_builder.rb +6 -1
- data/lib/karafka/routing/topic.rb +17 -5
- data/lib/karafka/routing/topics.rb +8 -0
- data/lib/karafka/runner.rb +1 -0
- data/lib/karafka/serialization/json/deserializer.rb +1 -0
- data/lib/karafka/server.rb +58 -28
- data/lib/karafka/setup/attributes_map.rb +344 -0
- data/lib/karafka/setup/config.rb +48 -19
- data/lib/karafka/status.rb +35 -7
- data/lib/karafka/templates/karafka.rb.erb +14 -6
- data/lib/karafka/time_trackers/base.rb +1 -6
- data/lib/karafka/time_trackers/pause.rb +49 -19
- data/lib/karafka/time_trackers/poll.rb +7 -3
- data/lib/karafka/version.rb +1 -1
- data/lib/karafka.rb +56 -3
- data/renovate.json +6 -0
- data.tar.gz.sig +0 -0
- metadata +189 -61
- metadata.gz.sig +0 -0
- data/bin/wait_for_kafka +0 -20
- data/certs/mensfeld.pem +0 -25
- data/lib/karafka/active_job/routing/extensions.rb +0 -31
- data/lib/karafka/contracts/consumer_group_topic.rb +0 -42
- data/lib/karafka/instrumentation.rb +0 -21
- data/lib/karafka/pro/base_consumer.rb +0 -82
- data/lib/karafka/pro/contracts/consumer_group.rb +0 -34
- data/lib/karafka/pro/contracts/consumer_group_topic.rb +0 -33
- data/lib/karafka/pro/routing/topic_extensions.rb +0 -38
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: karafka
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Maciej Mensfeld
|
|
@@ -10,31 +10,32 @@ bindir: bin
|
|
|
10
10
|
cert_chain:
|
|
11
11
|
- |
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
13
|
+
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
|
14
|
+
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
|
15
|
+
MB4XDTIyMDgxOTE3MjEzN1oXDTIzMDgxOTE3MjEzN1owPzEQMA4GA1UEAwwHY29u
|
|
16
|
+
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
|
17
|
+
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAODzeO3L6lxdATzMHKNW
|
|
18
|
+
jFA/GGunoPuylO/BMzy8RiQHh7VIvysAKs0tHhTx3g2D0STDpF+hcQcPELFikiT2
|
|
19
|
+
F+1wOHj/SsrK7VKqfA8+gq04hKc5sQoX2Egf9k3V0YJ3eZ6R/koHkQ8A0TVt0w6F
|
|
20
|
+
ZQckoV4MqnEAx0g/FZN3mnHTlJ3VFLSBqJEIe+S6FZMl92mSv+hTrlUG8VaYxSfN
|
|
21
|
+
lTCvnKk284F6QZq5XIENLRmcDd/3aPBLnLwNnyMyhB+6gK8cUO+CFlDO5tjo/aBA
|
|
22
|
+
rUnl++wGG0JooF1ed0v+evOn9KoMBG6rHewcf79qJbVOscbD8qSAmo+sCXtcFryr
|
|
23
|
+
KRMTB8gNbowJkFRJDEe8tfRy11u1fYzFg/qNO82FJd62rKAw2wN0C29yCeQOPRb1
|
|
24
|
+
Cw9Y4ZwK9VFNEcV9L+3pHTHn2XfuZHtDaG198VweiF6raFO4yiEYccodH/USP0L5
|
|
25
|
+
cbcCFtmu/4HDSxL1ByQXO84A0ybJuk3/+aPUSXe9C9U8fwIDAQABo3cwdTAJBgNV
|
|
26
|
+
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUSlcEakb7gfn/5E2WY6z73BF/
|
|
27
|
+
iZkwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
|
28
|
+
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEA1aS+E7RXJ1w9g9mJ
|
|
29
|
+
G0NzFxe64OEuENosNlvYQCbRKGCXAU1qqelYkBQHseRgRKxLICrnypRo9IEobyHa
|
|
30
|
+
vDnJ4r7Tsb34dleqQW2zY/obG+cia3Ym2JsegXWF7dDOzCXJ4FN8MFoT2jHlqLLw
|
|
31
|
+
yrap0YO5zx0GSQ0Dwy8h2n2v2vanMEeCx7iNm3ERgR5WuN5sjzWoz2A/JLEEcK0C
|
|
32
|
+
EnAGKCWAd1fuG8IemDjT1edsd5FyYR4bIX0m+99oDuFZyPiiIbalmyYiSBBp59Yb
|
|
33
|
+
Q0P8zeBi4OfwCZNcxqz0KONmw9JLNv6DgyEAH5xe/4JzhMEgvIRiPj0pHfA7oqQF
|
|
34
|
+
KUNqvD1KlxbEC+bZfE5IZhnqYLdld/Ksqd22FI1RBhiS1Ejfsj99LVIm9cBuZEY2
|
|
35
|
+
Qf04B9ceLUaC4fPVEz10FyobjaFoY4i32xRto3XnrzeAgfEe4swLq8bQsR3w/EF3
|
|
36
|
+
MGU0FeSV2Yj7Xc2x/7BzLK8xQn5l7Yy75iPF+KP3vVmDHnNl
|
|
36
37
|
-----END CERTIFICATE-----
|
|
37
|
-
date:
|
|
38
|
+
date: 2023-05-22 00:00:00.000000000 Z
|
|
38
39
|
dependencies:
|
|
39
40
|
- !ruby/object:Gem::Dependency
|
|
40
41
|
name: karafka-core
|
|
@@ -42,7 +43,7 @@ dependencies:
|
|
|
42
43
|
requirements:
|
|
43
44
|
- - ">="
|
|
44
45
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 2.0.
|
|
46
|
+
version: 2.0.12
|
|
46
47
|
- - "<"
|
|
47
48
|
- !ruby/object:Gem::Version
|
|
48
49
|
version: 3.0.0
|
|
@@ -52,24 +53,10 @@ dependencies:
|
|
|
52
53
|
requirements:
|
|
53
54
|
- - ">="
|
|
54
55
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: 2.0.
|
|
56
|
+
version: 2.0.12
|
|
56
57
|
- - "<"
|
|
57
58
|
- !ruby/object:Gem::Version
|
|
58
59
|
version: 3.0.0
|
|
59
|
-
- !ruby/object:Gem::Dependency
|
|
60
|
-
name: rdkafka
|
|
61
|
-
requirement: !ruby/object:Gem::Requirement
|
|
62
|
-
requirements:
|
|
63
|
-
- - ">="
|
|
64
|
-
- !ruby/object:Gem::Version
|
|
65
|
-
version: '0.12'
|
|
66
|
-
type: :runtime
|
|
67
|
-
prerelease: false
|
|
68
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
69
|
-
requirements:
|
|
70
|
-
- - ">="
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: '0.12'
|
|
73
60
|
- !ruby/object:Gem::Dependency
|
|
74
61
|
name: thor
|
|
75
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -90,7 +77,7 @@ dependencies:
|
|
|
90
77
|
requirements:
|
|
91
78
|
- - ">="
|
|
92
79
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: 2.4.
|
|
80
|
+
version: 2.4.10
|
|
94
81
|
- - "<"
|
|
95
82
|
- !ruby/object:Gem::Version
|
|
96
83
|
version: 3.0.0
|
|
@@ -100,7 +87,7 @@ dependencies:
|
|
|
100
87
|
requirements:
|
|
101
88
|
- - ">="
|
|
102
89
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 2.4.
|
|
90
|
+
version: 2.4.10
|
|
104
91
|
- - "<"
|
|
105
92
|
- !ruby/object:Gem::Version
|
|
106
93
|
version: 3.0.0
|
|
@@ -118,9 +105,13 @@ dependencies:
|
|
|
118
105
|
- - "~>"
|
|
119
106
|
- !ruby/object:Gem::Version
|
|
120
107
|
version: '2.3'
|
|
121
|
-
description:
|
|
108
|
+
description: |2
|
|
109
|
+
Karafka is Ruby and Rails efficient Kafka processing framework.
|
|
110
|
+
|
|
111
|
+
Karafka allows you to capture everything that happens in your systems in large scale,
|
|
112
|
+
without having to focus on things that are not your business domain.
|
|
122
113
|
email:
|
|
123
|
-
-
|
|
114
|
+
- contact@karafka.io
|
|
124
115
|
executables:
|
|
125
116
|
- karafka
|
|
126
117
|
extensions: []
|
|
@@ -129,6 +120,7 @@ files:
|
|
|
129
120
|
- ".coditsu/ci.yml"
|
|
130
121
|
- ".console_irbrc"
|
|
131
122
|
- ".diffend.yml"
|
|
123
|
+
- ".github/FUNDING.yml"
|
|
132
124
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
133
125
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
134
126
|
- ".github/workflows/ci.yml"
|
|
@@ -149,23 +141,28 @@ files:
|
|
|
149
141
|
- bin/create_token
|
|
150
142
|
- bin/integrations
|
|
151
143
|
- bin/karafka
|
|
144
|
+
- bin/rspecs
|
|
152
145
|
- bin/scenario
|
|
153
146
|
- bin/stress_many
|
|
154
147
|
- bin/stress_one
|
|
155
|
-
- bin/
|
|
148
|
+
- bin/verify_license_integrity
|
|
149
|
+
- certs/cert_chain.pem
|
|
156
150
|
- certs/karafka-pro.pem
|
|
157
|
-
-
|
|
158
|
-
- config/
|
|
151
|
+
- config/locales/errors.yml
|
|
152
|
+
- config/locales/pro_errors.yml
|
|
159
153
|
- docker-compose.yml
|
|
160
154
|
- karafka.gemspec
|
|
161
155
|
- lib/active_job/karafka.rb
|
|
162
156
|
- lib/active_job/queue_adapters/karafka_adapter.rb
|
|
163
157
|
- lib/karafka.rb
|
|
164
158
|
- lib/karafka/active_job/consumer.rb
|
|
159
|
+
- lib/karafka/active_job/current_attributes.rb
|
|
160
|
+
- lib/karafka/active_job/current_attributes/loading.rb
|
|
161
|
+
- lib/karafka/active_job/current_attributes/persistence.rb
|
|
165
162
|
- lib/karafka/active_job/dispatcher.rb
|
|
166
163
|
- lib/karafka/active_job/job_extensions.rb
|
|
167
164
|
- lib/karafka/active_job/job_options_contract.rb
|
|
168
|
-
- lib/karafka/
|
|
165
|
+
- lib/karafka/admin.rb
|
|
169
166
|
- lib/karafka/app.rb
|
|
170
167
|
- lib/karafka/base_consumer.rb
|
|
171
168
|
- lib/karafka/cli.rb
|
|
@@ -174,7 +171,9 @@ files:
|
|
|
174
171
|
- lib/karafka/cli/info.rb
|
|
175
172
|
- lib/karafka/cli/install.rb
|
|
176
173
|
- lib/karafka/cli/server.rb
|
|
174
|
+
- lib/karafka/cli/topics.rb
|
|
177
175
|
- lib/karafka/connection/client.rb
|
|
176
|
+
- lib/karafka/connection/consumer_group_coordinator.rb
|
|
178
177
|
- lib/karafka/connection/listener.rb
|
|
179
178
|
- lib/karafka/connection/listeners_batch.rb
|
|
180
179
|
- lib/karafka/connection/messages_buffer.rb
|
|
@@ -185,14 +184,14 @@ files:
|
|
|
185
184
|
- lib/karafka/contracts/base.rb
|
|
186
185
|
- lib/karafka/contracts/config.rb
|
|
187
186
|
- lib/karafka/contracts/consumer_group.rb
|
|
188
|
-
- lib/karafka/contracts/consumer_group_topic.rb
|
|
189
187
|
- lib/karafka/contracts/server_cli_options.rb
|
|
188
|
+
- lib/karafka/contracts/topic.rb
|
|
189
|
+
- lib/karafka/embedded.rb
|
|
190
190
|
- lib/karafka/env.rb
|
|
191
191
|
- lib/karafka/errors.rb
|
|
192
192
|
- lib/karafka/helpers/async.rb
|
|
193
193
|
- lib/karafka/helpers/colorize.rb
|
|
194
194
|
- lib/karafka/helpers/multi_delegator.rb
|
|
195
|
-
- lib/karafka/instrumentation.rb
|
|
196
195
|
- lib/karafka/instrumentation/callbacks/error.rb
|
|
197
196
|
- lib/karafka/instrumentation/callbacks/statistics.rb
|
|
198
197
|
- lib/karafka/instrumentation/logger.rb
|
|
@@ -201,7 +200,9 @@ files:
|
|
|
201
200
|
- lib/karafka/instrumentation/notifications.rb
|
|
202
201
|
- lib/karafka/instrumentation/proctitle_listener.rb
|
|
203
202
|
- lib/karafka/instrumentation/vendors/datadog/dashboard.json
|
|
204
|
-
- lib/karafka/instrumentation/vendors/datadog/
|
|
203
|
+
- lib/karafka/instrumentation/vendors/datadog/logger_listener.rb
|
|
204
|
+
- lib/karafka/instrumentation/vendors/datadog/metrics_listener.rb
|
|
205
|
+
- lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb
|
|
205
206
|
- lib/karafka/licenser.rb
|
|
206
207
|
- lib/karafka/messages/batch_metadata.rb
|
|
207
208
|
- lib/karafka/messages/builders/batch_metadata.rb
|
|
@@ -210,25 +211,116 @@ files:
|
|
|
210
211
|
- lib/karafka/messages/message.rb
|
|
211
212
|
- lib/karafka/messages/messages.rb
|
|
212
213
|
- lib/karafka/messages/metadata.rb
|
|
214
|
+
- lib/karafka/messages/parser.rb
|
|
213
215
|
- lib/karafka/messages/seek.rb
|
|
216
|
+
- lib/karafka/patches/rdkafka/bindings.rb
|
|
214
217
|
- lib/karafka/patches/rdkafka/consumer.rb
|
|
215
218
|
- lib/karafka/pro.rb
|
|
216
219
|
- lib/karafka/pro/active_job/consumer.rb
|
|
217
220
|
- lib/karafka/pro/active_job/dispatcher.rb
|
|
218
221
|
- lib/karafka/pro/active_job/job_options_contract.rb
|
|
219
|
-
- lib/karafka/pro/
|
|
220
|
-
- lib/karafka/pro/
|
|
221
|
-
- lib/karafka/pro/contracts/
|
|
222
|
-
- lib/karafka/pro/
|
|
222
|
+
- lib/karafka/pro/encryption.rb
|
|
223
|
+
- lib/karafka/pro/encryption/cipher.rb
|
|
224
|
+
- lib/karafka/pro/encryption/contracts/config.rb
|
|
225
|
+
- lib/karafka/pro/encryption/errors.rb
|
|
226
|
+
- lib/karafka/pro/encryption/messages/middleware.rb
|
|
227
|
+
- lib/karafka/pro/encryption/messages/parser.rb
|
|
228
|
+
- lib/karafka/pro/encryption/setup/config.rb
|
|
229
|
+
- lib/karafka/pro/iterator.rb
|
|
223
230
|
- lib/karafka/pro/loader.rb
|
|
224
231
|
- lib/karafka/pro/performance_tracker.rb
|
|
232
|
+
- lib/karafka/pro/processing/collapser.rb
|
|
225
233
|
- lib/karafka/pro/processing/coordinator.rb
|
|
234
|
+
- lib/karafka/pro/processing/filters/base.rb
|
|
235
|
+
- lib/karafka/pro/processing/filters/delayer.rb
|
|
236
|
+
- lib/karafka/pro/processing/filters/expirer.rb
|
|
237
|
+
- lib/karafka/pro/processing/filters/throttler.rb
|
|
238
|
+
- lib/karafka/pro/processing/filters/virtual_limiter.rb
|
|
239
|
+
- lib/karafka/pro/processing/filters_applier.rb
|
|
226
240
|
- lib/karafka/pro/processing/jobs/consume_non_blocking.rb
|
|
241
|
+
- lib/karafka/pro/processing/jobs/revoked_non_blocking.rb
|
|
227
242
|
- lib/karafka/pro/processing/jobs_builder.rb
|
|
228
243
|
- lib/karafka/pro/processing/partitioner.rb
|
|
229
244
|
- lib/karafka/pro/processing/scheduler.rb
|
|
230
|
-
- lib/karafka/pro/
|
|
231
|
-
- lib/karafka/pro/
|
|
245
|
+
- lib/karafka/pro/processing/strategies.rb
|
|
246
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb
|
|
247
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb
|
|
248
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb
|
|
249
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb
|
|
250
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb
|
|
251
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb
|
|
252
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_mom.rb
|
|
253
|
+
- lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb
|
|
254
|
+
- lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb
|
|
255
|
+
- lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb
|
|
256
|
+
- lib/karafka/pro/processing/strategies/aj/ftr_mom.rb
|
|
257
|
+
- lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb
|
|
258
|
+
- lib/karafka/pro/processing/strategies/aj/lrj_mom.rb
|
|
259
|
+
- lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb
|
|
260
|
+
- lib/karafka/pro/processing/strategies/aj/mom.rb
|
|
261
|
+
- lib/karafka/pro/processing/strategies/aj/mom_vp.rb
|
|
262
|
+
- lib/karafka/pro/processing/strategies/base.rb
|
|
263
|
+
- lib/karafka/pro/processing/strategies/default.rb
|
|
264
|
+
- lib/karafka/pro/processing/strategies/dlq/default.rb
|
|
265
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr.rb
|
|
266
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb
|
|
267
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb
|
|
268
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb
|
|
269
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb
|
|
270
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb
|
|
271
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb
|
|
272
|
+
- lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb
|
|
273
|
+
- lib/karafka/pro/processing/strategies/dlq/lrj.rb
|
|
274
|
+
- lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb
|
|
275
|
+
- lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb
|
|
276
|
+
- lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb
|
|
277
|
+
- lib/karafka/pro/processing/strategies/dlq/mom.rb
|
|
278
|
+
- lib/karafka/pro/processing/strategies/dlq/mom_vp.rb
|
|
279
|
+
- lib/karafka/pro/processing/strategies/dlq/vp.rb
|
|
280
|
+
- lib/karafka/pro/processing/strategies/ftr/default.rb
|
|
281
|
+
- lib/karafka/pro/processing/strategies/ftr/vp.rb
|
|
282
|
+
- lib/karafka/pro/processing/strategies/lrj/default.rb
|
|
283
|
+
- lib/karafka/pro/processing/strategies/lrj/ftr.rb
|
|
284
|
+
- lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb
|
|
285
|
+
- lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb
|
|
286
|
+
- lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb
|
|
287
|
+
- lib/karafka/pro/processing/strategies/lrj/mom.rb
|
|
288
|
+
- lib/karafka/pro/processing/strategies/lrj/mom_vp.rb
|
|
289
|
+
- lib/karafka/pro/processing/strategies/lrj/vp.rb
|
|
290
|
+
- lib/karafka/pro/processing/strategies/mom/default.rb
|
|
291
|
+
- lib/karafka/pro/processing/strategies/mom/ftr.rb
|
|
292
|
+
- lib/karafka/pro/processing/strategies/mom/ftr_vp.rb
|
|
293
|
+
- lib/karafka/pro/processing/strategies/mom/vp.rb
|
|
294
|
+
- lib/karafka/pro/processing/strategies/vp/default.rb
|
|
295
|
+
- lib/karafka/pro/processing/strategy_selector.rb
|
|
296
|
+
- lib/karafka/pro/processing/virtual_offset_manager.rb
|
|
297
|
+
- lib/karafka/pro/routing/features/base.rb
|
|
298
|
+
- lib/karafka/pro/routing/features/dead_letter_queue.rb
|
|
299
|
+
- lib/karafka/pro/routing/features/dead_letter_queue/contract.rb
|
|
300
|
+
- lib/karafka/pro/routing/features/delaying.rb
|
|
301
|
+
- lib/karafka/pro/routing/features/delaying/config.rb
|
|
302
|
+
- lib/karafka/pro/routing/features/delaying/contract.rb
|
|
303
|
+
- lib/karafka/pro/routing/features/delaying/topic.rb
|
|
304
|
+
- lib/karafka/pro/routing/features/expiring.rb
|
|
305
|
+
- lib/karafka/pro/routing/features/expiring/config.rb
|
|
306
|
+
- lib/karafka/pro/routing/features/expiring/contract.rb
|
|
307
|
+
- lib/karafka/pro/routing/features/expiring/topic.rb
|
|
308
|
+
- lib/karafka/pro/routing/features/filtering.rb
|
|
309
|
+
- lib/karafka/pro/routing/features/filtering/config.rb
|
|
310
|
+
- lib/karafka/pro/routing/features/filtering/contract.rb
|
|
311
|
+
- lib/karafka/pro/routing/features/filtering/topic.rb
|
|
312
|
+
- lib/karafka/pro/routing/features/long_running_job.rb
|
|
313
|
+
- lib/karafka/pro/routing/features/long_running_job/config.rb
|
|
314
|
+
- lib/karafka/pro/routing/features/long_running_job/contract.rb
|
|
315
|
+
- lib/karafka/pro/routing/features/long_running_job/topic.rb
|
|
316
|
+
- lib/karafka/pro/routing/features/throttling.rb
|
|
317
|
+
- lib/karafka/pro/routing/features/throttling/config.rb
|
|
318
|
+
- lib/karafka/pro/routing/features/throttling/contract.rb
|
|
319
|
+
- lib/karafka/pro/routing/features/throttling/topic.rb
|
|
320
|
+
- lib/karafka/pro/routing/features/virtual_partitions.rb
|
|
321
|
+
- lib/karafka/pro/routing/features/virtual_partitions/config.rb
|
|
322
|
+
- lib/karafka/pro/routing/features/virtual_partitions/contract.rb
|
|
323
|
+
- lib/karafka/pro/routing/features/virtual_partitions/topic.rb
|
|
232
324
|
- lib/karafka/process.rb
|
|
233
325
|
- lib/karafka/processing/coordinator.rb
|
|
234
326
|
- lib/karafka/processing/coordinators_buffer.rb
|
|
@@ -236,6 +328,7 @@ files:
|
|
|
236
328
|
- lib/karafka/processing/executors_buffer.rb
|
|
237
329
|
- lib/karafka/processing/jobs/base.rb
|
|
238
330
|
- lib/karafka/processing/jobs/consume.rb
|
|
331
|
+
- lib/karafka/processing/jobs/idle.rb
|
|
239
332
|
- lib/karafka/processing/jobs/revoked.rb
|
|
240
333
|
- lib/karafka/processing/jobs/shutdown.rb
|
|
241
334
|
- lib/karafka/processing/jobs_builder.rb
|
|
@@ -243,12 +336,40 @@ files:
|
|
|
243
336
|
- lib/karafka/processing/partitioner.rb
|
|
244
337
|
- lib/karafka/processing/result.rb
|
|
245
338
|
- lib/karafka/processing/scheduler.rb
|
|
339
|
+
- lib/karafka/processing/strategies/aj_dlq_mom.rb
|
|
340
|
+
- lib/karafka/processing/strategies/aj_mom.rb
|
|
341
|
+
- lib/karafka/processing/strategies/base.rb
|
|
342
|
+
- lib/karafka/processing/strategies/default.rb
|
|
343
|
+
- lib/karafka/processing/strategies/dlq.rb
|
|
344
|
+
- lib/karafka/processing/strategies/dlq_mom.rb
|
|
345
|
+
- lib/karafka/processing/strategies/mom.rb
|
|
346
|
+
- lib/karafka/processing/strategy_selector.rb
|
|
246
347
|
- lib/karafka/processing/worker.rb
|
|
247
348
|
- lib/karafka/processing/workers_batch.rb
|
|
248
349
|
- lib/karafka/railtie.rb
|
|
350
|
+
- lib/karafka/routing/activity_manager.rb
|
|
249
351
|
- lib/karafka/routing/builder.rb
|
|
250
352
|
- lib/karafka/routing/consumer_group.rb
|
|
251
353
|
- lib/karafka/routing/consumer_mapper.rb
|
|
354
|
+
- lib/karafka/routing/features/active_job.rb
|
|
355
|
+
- lib/karafka/routing/features/active_job/builder.rb
|
|
356
|
+
- lib/karafka/routing/features/active_job/config.rb
|
|
357
|
+
- lib/karafka/routing/features/active_job/contract.rb
|
|
358
|
+
- lib/karafka/routing/features/active_job/topic.rb
|
|
359
|
+
- lib/karafka/routing/features/base.rb
|
|
360
|
+
- lib/karafka/routing/features/base/expander.rb
|
|
361
|
+
- lib/karafka/routing/features/dead_letter_queue.rb
|
|
362
|
+
- lib/karafka/routing/features/dead_letter_queue/config.rb
|
|
363
|
+
- lib/karafka/routing/features/dead_letter_queue/contract.rb
|
|
364
|
+
- lib/karafka/routing/features/dead_letter_queue/topic.rb
|
|
365
|
+
- lib/karafka/routing/features/declaratives.rb
|
|
366
|
+
- lib/karafka/routing/features/declaratives/config.rb
|
|
367
|
+
- lib/karafka/routing/features/declaratives/contract.rb
|
|
368
|
+
- lib/karafka/routing/features/declaratives/topic.rb
|
|
369
|
+
- lib/karafka/routing/features/manual_offset_management.rb
|
|
370
|
+
- lib/karafka/routing/features/manual_offset_management/config.rb
|
|
371
|
+
- lib/karafka/routing/features/manual_offset_management/contract.rb
|
|
372
|
+
- lib/karafka/routing/features/manual_offset_management/topic.rb
|
|
252
373
|
- lib/karafka/routing/proxy.rb
|
|
253
374
|
- lib/karafka/routing/router.rb
|
|
254
375
|
- lib/karafka/routing/subscription_group.rb
|
|
@@ -258,6 +379,7 @@ files:
|
|
|
258
379
|
- lib/karafka/runner.rb
|
|
259
380
|
- lib/karafka/serialization/json/deserializer.rb
|
|
260
381
|
- lib/karafka/server.rb
|
|
382
|
+
- lib/karafka/setup/attributes_map.rb
|
|
261
383
|
- lib/karafka/setup/config.rb
|
|
262
384
|
- lib/karafka/setup/dsl.rb
|
|
263
385
|
- lib/karafka/status.rb
|
|
@@ -269,12 +391,18 @@ files:
|
|
|
269
391
|
- lib/karafka/time_trackers/poll.rb
|
|
270
392
|
- lib/karafka/version.rb
|
|
271
393
|
- log/.gitkeep
|
|
394
|
+
- renovate.json
|
|
272
395
|
homepage: https://karafka.io
|
|
273
396
|
licenses:
|
|
274
397
|
- LGPL-3.0
|
|
275
398
|
- Commercial
|
|
276
399
|
metadata:
|
|
400
|
+
funding_uri: https://karafka.io/#become-pro
|
|
401
|
+
homepage_uri: https://karafka.io
|
|
402
|
+
changelog_uri: https://github.com/karafka/karafka/blob/master/CHANGELOG.md
|
|
403
|
+
bug_tracker_uri: https://github.com/karafka/karafka/issues
|
|
277
404
|
source_code_uri: https://github.com/karafka/karafka
|
|
405
|
+
documentation_uri: https://karafka.io/docs
|
|
278
406
|
rubygems_mfa_required: 'true'
|
|
279
407
|
post_install_message:
|
|
280
408
|
rdoc_options: []
|
|
@@ -284,15 +412,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
284
412
|
requirements:
|
|
285
413
|
- - ">="
|
|
286
414
|
- !ruby/object:Gem::Version
|
|
287
|
-
version:
|
|
415
|
+
version: '0'
|
|
288
416
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
417
|
requirements:
|
|
290
418
|
- - ">="
|
|
291
419
|
- !ruby/object:Gem::Version
|
|
292
420
|
version: '0'
|
|
293
421
|
requirements: []
|
|
294
|
-
rubygems_version: 3.
|
|
422
|
+
rubygems_version: 3.4.10
|
|
295
423
|
signing_key:
|
|
296
424
|
specification_version: 4
|
|
297
|
-
summary:
|
|
425
|
+
summary: Karafka is Ruby and Rails efficient Kafka processing framework.
|
|
298
426
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/bin/wait_for_kafka
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# This script allows us to wait for Kafka docker to fully be ready
|
|
4
|
-
# We consider it fully ready when all our topics that need to be created are created as expected
|
|
5
|
-
|
|
6
|
-
KAFKA_NAME='karafka_20_kafka'
|
|
7
|
-
ZOOKEEPER='zookeeper:2181'
|
|
8
|
-
LIST_CMD="kafka-topics.sh --list --zookeeper $ZOOKEEPER"
|
|
9
|
-
|
|
10
|
-
# Take the number of topics that we need to create prior to running anything
|
|
11
|
-
TOPICS_COUNT=`cat docker-compose.yml | grep -E -i 'integrations_|benchmarks_' | wc -l`
|
|
12
|
-
|
|
13
|
-
# And wait until all of them are created
|
|
14
|
-
until (((`docker exec $KAFKA_NAME $LIST_CMD | wc -l`) >= $TOPICS_COUNT));
|
|
15
|
-
do
|
|
16
|
-
echo "Waiting for Kafka to create all the needed topics..."
|
|
17
|
-
sleep 1
|
|
18
|
-
done
|
|
19
|
-
|
|
20
|
-
echo "All the needed topics created."
|
data/certs/mensfeld.pem
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
|
|
3
|
-
ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjEwODExMTQxNTEzWhcNMjIwODExMTQx
|
|
4
|
-
NTEzWjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
|
|
5
|
-
CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDV2jKH4Ti87GM6nyT6D+ESzTI0MZDj
|
|
6
|
-
ak2/TEwnxvijMJyCCPKT/qIkbW4/f0VHM4rhPr1nW73sb5SZBVFCLlJcOSKOBdUY
|
|
7
|
-
TMY+SIXN2EtUaZuhAOe8LxtxjHTgRHvHcqUQMBENXTISNzCo32LnUxweu66ia4Pd
|
|
8
|
-
1mNRhzOqNv9YiBZvtBf7IMQ+sYdOCjboq2dlsWmJiwiDpY9lQBTnWORnT3mQxU5x
|
|
9
|
-
vPSwnLB854cHdCS8fQo4DjeJBRZHhEbcE5sqhEMB3RZA3EtFVEXOxlNxVTS3tncI
|
|
10
|
-
qyNXiWDaxcipaens4ObSY1C2HTV7OWb7OMqSCIybeYTSfkaSdqmcl4S6zxXkjH1J
|
|
11
|
-
tnjayAVzD+QVXGijsPLE2PFnJAh9iDET2cMsjabO1f6l1OQNyAtqpcyQcgfnyW0z
|
|
12
|
-
g7tGxTYD+6wJHffM9d9txOUw6djkF6bDxyqB8lo4Z3IObCx18AZjI9XPS9QG7w6q
|
|
13
|
-
LCWuMG2lkCcRgASqaVk9fEf9yMc2xxz5o3kCAwEAAaN3MHUwCQYDVR0TBAIwADAL
|
|
14
|
-
BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFBqUFCKCOe5IuueUVqOB991jyCLLMB0GA1Ud
|
|
15
|
-
EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
|
|
16
|
-
c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBADD0/UuTTFgW+CGk2U0RDw2RBOca
|
|
17
|
-
W2LTF/G7AOzuzD0Tc4voc7WXyrgKwJREv8rgBimLnNlgmFJLmtUCh2U/MgxvcilH
|
|
18
|
-
yshYcbseNvjkrtYnLRlWZR4SSB6Zei5AlyGVQLPkvdsBpNegcG6w075YEwzX/38a
|
|
19
|
-
8V9B/Yri2OGELBz8ykl7BsXUgNoUPA/4pHF6YRLz+VirOaUIQ4JfY7xGj6fSOWWz
|
|
20
|
-
/rQ/d77r6o1mfJYM/3BRVg73a3b7DmRnE5qjwmSaSQ7u802pJnLesmArch0xGCT/
|
|
21
|
-
fMmRli1Qb+6qOTl9mzD6UDMAyFR4t6MStLm0mIEqM0nBO5nUdUWbC7l9qXEf8XBE
|
|
22
|
-
2DP28p3EqSuS+lKbAWKcqv7t0iRhhmaod+Yn9mcrLN1sa3q3KSQ9BCyxezCD4Mk2
|
|
23
|
-
R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
|
|
24
|
-
pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
|
|
25
|
-
-----END CERTIFICATE-----
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Karafka
|
|
4
|
-
# ActiveJob related Karafka stuff
|
|
5
|
-
module ActiveJob
|
|
6
|
-
# Karafka routing ActiveJob related components
|
|
7
|
-
module Routing
|
|
8
|
-
# Routing extensions for ActiveJob
|
|
9
|
-
module Extensions
|
|
10
|
-
# This method simplifies routes definition for ActiveJob topics / queues by auto-injecting
|
|
11
|
-
# the consumer class
|
|
12
|
-
# @param name [String, Symbol] name of the topic where ActiveJobs jobs should go
|
|
13
|
-
# @param block [Proc] block that we can use for some extra configuration
|
|
14
|
-
def active_job_topic(name, &block)
|
|
15
|
-
topic(name) do
|
|
16
|
-
consumer App.config.internal.active_job.consumer_class
|
|
17
|
-
|
|
18
|
-
next unless block
|
|
19
|
-
|
|
20
|
-
instance_eval(&block)
|
|
21
|
-
|
|
22
|
-
# This is handled by our custom ActiveJob consumer
|
|
23
|
-
# Without this, default behaviour would cause messages to skip upon shutdown as the
|
|
24
|
-
# offset would be committed for the last message
|
|
25
|
-
manual_offset_management true
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Karafka
|
|
4
|
-
module Contracts
|
|
5
|
-
# Consumer group topic validation rules.
|
|
6
|
-
class ConsumerGroupTopic < Base
|
|
7
|
-
configure do |config|
|
|
8
|
-
config.error_messages = YAML.safe_load(
|
|
9
|
-
File.read(
|
|
10
|
-
File.join(Karafka.gem_root, 'config', 'errors.yml')
|
|
11
|
-
)
|
|
12
|
-
).fetch('en').fetch('validations').fetch('consumer_group_topic')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
required(:consumer) { |consumer_group| !consumer_group.nil? }
|
|
16
|
-
required(:deserializer) { |deserializer| !deserializer.nil? }
|
|
17
|
-
required(:id) { |id| id.is_a?(String) && Contracts::TOPIC_REGEXP.match?(id) }
|
|
18
|
-
required(:kafka) { |kafka| kafka.is_a?(Hash) && !kafka.empty? }
|
|
19
|
-
required(:max_messages) { |mm| mm.is_a?(Integer) && mm >= 1 }
|
|
20
|
-
required(:initial_offset) { |io| %w[earliest latest].include?(io) }
|
|
21
|
-
required(:max_wait_time) { |mwt| mwt.is_a?(Integer) && mwt >= 10 }
|
|
22
|
-
required(:manual_offset_management) { |mmm| [true, false].include?(mmm) }
|
|
23
|
-
required(:name) { |name| name.is_a?(String) && Contracts::TOPIC_REGEXP.match?(name) }
|
|
24
|
-
|
|
25
|
-
virtual do |data, errors|
|
|
26
|
-
next unless errors.empty?
|
|
27
|
-
|
|
28
|
-
value = data.fetch(:kafka)
|
|
29
|
-
|
|
30
|
-
begin
|
|
31
|
-
# This will trigger rdkafka validations that we catch and re-map the info and use dry
|
|
32
|
-
# compatible format
|
|
33
|
-
Rdkafka::Config.new(value).send(:native_config)
|
|
34
|
-
|
|
35
|
-
nil
|
|
36
|
-
rescue Rdkafka::Config::ConfigError => e
|
|
37
|
-
[[%w[kafka], e.message]]
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Karafka
|
|
4
|
-
# @note Since we can only have one statistics callbacks manager and one error callbacks manager
|
|
5
|
-
# we use WaterDrops one that is already configured.
|
|
6
|
-
module Instrumentation
|
|
7
|
-
class << self
|
|
8
|
-
# Returns a manager for statistics callbacks
|
|
9
|
-
# @return [::WaterDrop::CallbacksManager]
|
|
10
|
-
def statistics_callbacks
|
|
11
|
-
::WaterDrop::Instrumentation.statistics_callbacks
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Returns a manager for error callbacks
|
|
15
|
-
# @return [::WaterDrop::CallbacksManager]
|
|
16
|
-
def error_callbacks
|
|
17
|
-
::WaterDrop::Instrumentation.error_callbacks
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# This Karafka component is a Pro component.
|
|
4
|
-
# All of the commercial components are present in the lib/karafka/pro directory of this
|
|
5
|
-
# repository and their usage requires commercial license agreement.
|
|
6
|
-
#
|
|
7
|
-
# Karafka has also commercial-friendly license, commercial support and commercial components.
|
|
8
|
-
#
|
|
9
|
-
# By sending a pull request to the pro components, you are agreeing to transfer the copyright of
|
|
10
|
-
# your code to Maciej Mensfeld.
|
|
11
|
-
|
|
12
|
-
module Karafka
|
|
13
|
-
module Pro
|
|
14
|
-
# Karafka PRO consumer.
|
|
15
|
-
#
|
|
16
|
-
# If you use PRO, all your consumers should inherit (indirectly) from it.
|
|
17
|
-
#
|
|
18
|
-
# @note In case of using lrj, manual pausing may not be the best idea as resume needs to happen
|
|
19
|
-
# after each batch is processed.
|
|
20
|
-
class BaseConsumer < Karafka::BaseConsumer
|
|
21
|
-
# Pause for tops 31 years
|
|
22
|
-
MAX_PAUSE_TIME = 1_000_000_000_000
|
|
23
|
-
|
|
24
|
-
private_constant :MAX_PAUSE_TIME
|
|
25
|
-
|
|
26
|
-
# Pauses processing of a given partition until we're done with the processing
|
|
27
|
-
# This ensures, that we can easily poll not reaching the `max.poll.interval`
|
|
28
|
-
def on_before_consume
|
|
29
|
-
return unless topic.long_running_job?
|
|
30
|
-
|
|
31
|
-
# This ensures, that when running LRJ with VP, things operate as expected
|
|
32
|
-
coordinator.on_started do |first_group_message|
|
|
33
|
-
# Pause at the first message in a batch. That way in case of a crash, we will not loose
|
|
34
|
-
# any messages
|
|
35
|
-
pause(first_group_message.offset, MAX_PAUSE_TIME)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Runs extra logic after consumption that is related to handling long-running jobs
|
|
40
|
-
# @note This overwrites the '#on_after_consume' from the base consumer
|
|
41
|
-
def on_after_consume
|
|
42
|
-
coordinator.on_finished do |first_group_message, last_group_message|
|
|
43
|
-
on_after_consume_regular(first_group_message, last_group_message)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
# Handles the post-consumption flow depending on topic settings
|
|
50
|
-
#
|
|
51
|
-
# @param first_message [Karafka::Messages::Message]
|
|
52
|
-
# @param last_message [Karafka::Messages::Message]
|
|
53
|
-
def on_after_consume_regular(first_message, last_message)
|
|
54
|
-
if coordinator.success?
|
|
55
|
-
coordinator.pause_tracker.reset
|
|
56
|
-
|
|
57
|
-
# We use the non-blocking one here. If someone needs the blocking one, can implement it
|
|
58
|
-
# with manual offset management
|
|
59
|
-
# Mark as consumed only if manual offset management is not on
|
|
60
|
-
mark_as_consumed(last_message) unless topic.manual_offset_management? || revoked?
|
|
61
|
-
|
|
62
|
-
# If this is not a long-running job there is nothing for us to do here
|
|
63
|
-
return unless topic.long_running_job?
|
|
64
|
-
|
|
65
|
-
# Once processing is done, we move to the new offset based on commits
|
|
66
|
-
# Here, in case manual offset management is off, we have the new proper offset of a
|
|
67
|
-
# first message from another batch from `@seek_offset`. If manual offset management
|
|
68
|
-
# is on, we move to place where the user indicated it was finished. This can create an
|
|
69
|
-
# interesting (yet valid) corner case, where with manual offset management on and no
|
|
70
|
-
# marking as consumed, we end up with an infinite loop processing same messages over and
|
|
71
|
-
# over again
|
|
72
|
-
seek(@seek_offset || first_message.offset)
|
|
73
|
-
|
|
74
|
-
resume
|
|
75
|
-
else
|
|
76
|
-
# If processing failed, we need to pause
|
|
77
|
-
pause(@seek_offset || first_message.offset)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|