karafka 1.4.0 → 2.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +89 -18
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +365 -1
  6. data/CONTRIBUTING.md +10 -19
  7. data/Gemfile +6 -0
  8. data/Gemfile.lock +56 -112
  9. data/LICENSE +17 -0
  10. data/LICENSE-COMM +89 -0
  11. data/LICENSE-LGPL +165 -0
  12. data/README.md +61 -68
  13. data/bin/benchmarks +85 -0
  14. data/bin/create_token +22 -0
  15. data/bin/integrations +272 -0
  16. data/bin/karafka +10 -0
  17. data/bin/scenario +29 -0
  18. data/bin/stress_many +13 -0
  19. data/bin/stress_one +13 -0
  20. data/certs/cert_chain.pem +26 -0
  21. data/certs/karafka-pro.pem +11 -0
  22. data/config/errors.yml +59 -38
  23. data/docker-compose.yml +10 -3
  24. data/karafka.gemspec +18 -21
  25. data/lib/active_job/karafka.rb +21 -0
  26. data/lib/active_job/queue_adapters/karafka_adapter.rb +26 -0
  27. data/lib/karafka/active_job/consumer.rb +26 -0
  28. data/lib/karafka/active_job/dispatcher.rb +38 -0
  29. data/lib/karafka/active_job/job_extensions.rb +34 -0
  30. data/lib/karafka/active_job/job_options_contract.rb +21 -0
  31. data/lib/karafka/active_job/routing/extensions.rb +33 -0
  32. data/lib/karafka/admin.rb +63 -0
  33. data/lib/karafka/app.rb +15 -20
  34. data/lib/karafka/base_consumer.rb +197 -31
  35. data/lib/karafka/cli/info.rb +44 -10
  36. data/lib/karafka/cli/install.rb +22 -12
  37. data/lib/karafka/cli/server.rb +17 -42
  38. data/lib/karafka/cli.rb +4 -3
  39. data/lib/karafka/connection/client.rb +379 -89
  40. data/lib/karafka/connection/listener.rb +250 -38
  41. data/lib/karafka/connection/listeners_batch.rb +24 -0
  42. data/lib/karafka/connection/messages_buffer.rb +84 -0
  43. data/lib/karafka/connection/pauses_manager.rb +46 -0
  44. data/lib/karafka/connection/raw_messages_buffer.rb +101 -0
  45. data/lib/karafka/connection/rebalance_manager.rb +78 -0
  46. data/lib/karafka/contracts/base.rb +17 -0
  47. data/lib/karafka/contracts/config.rb +88 -11
  48. data/lib/karafka/contracts/consumer_group.rb +21 -184
  49. data/lib/karafka/contracts/consumer_group_topic.rb +35 -11
  50. data/lib/karafka/contracts/server_cli_options.rb +19 -18
  51. data/lib/karafka/contracts.rb +1 -1
  52. data/lib/karafka/env.rb +46 -0
  53. data/lib/karafka/errors.rb +21 -21
  54. data/lib/karafka/helpers/async.rb +33 -0
  55. data/lib/karafka/helpers/colorize.rb +20 -0
  56. data/lib/karafka/helpers/multi_delegator.rb +2 -2
  57. data/lib/karafka/instrumentation/callbacks/error.rb +40 -0
  58. data/lib/karafka/instrumentation/callbacks/statistics.rb +41 -0
  59. data/lib/karafka/instrumentation/logger.rb +6 -10
  60. data/lib/karafka/instrumentation/logger_listener.rb +174 -0
  61. data/lib/karafka/instrumentation/monitor.rb +13 -61
  62. data/lib/karafka/instrumentation/notifications.rb +53 -0
  63. data/lib/karafka/instrumentation/proctitle_listener.rb +3 -3
  64. data/lib/karafka/instrumentation/vendors/datadog/dashboard.json +1 -0
  65. data/lib/karafka/instrumentation/vendors/datadog/listener.rb +232 -0
  66. data/lib/karafka/instrumentation.rb +21 -0
  67. data/lib/karafka/licenser.rb +75 -0
  68. data/lib/karafka/messages/batch_metadata.rb +45 -0
  69. data/lib/karafka/messages/builders/batch_metadata.rb +39 -0
  70. data/lib/karafka/messages/builders/message.rb +39 -0
  71. data/lib/karafka/messages/builders/messages.rb +34 -0
  72. data/lib/karafka/{params/params.rb → messages/message.rb} +7 -12
  73. data/lib/karafka/messages/messages.rb +64 -0
  74. data/lib/karafka/{params → messages}/metadata.rb +4 -6
  75. data/lib/karafka/messages/seek.rb +9 -0
  76. data/lib/karafka/patches/rdkafka/consumer.rb +22 -0
  77. data/lib/karafka/pro/active_job/consumer.rb +46 -0
  78. data/lib/karafka/pro/active_job/dispatcher.rb +61 -0
  79. data/lib/karafka/pro/active_job/job_options_contract.rb +32 -0
  80. data/lib/karafka/pro/base_consumer.rb +107 -0
  81. data/lib/karafka/pro/contracts/base.rb +21 -0
  82. data/lib/karafka/pro/contracts/consumer_group.rb +34 -0
  83. data/lib/karafka/pro/contracts/consumer_group_topic.rb +69 -0
  84. data/lib/karafka/pro/loader.rb +76 -0
  85. data/lib/karafka/pro/performance_tracker.rb +80 -0
  86. data/lib/karafka/pro/processing/coordinator.rb +85 -0
  87. data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +38 -0
  88. data/lib/karafka/pro/processing/jobs_builder.rb +32 -0
  89. data/lib/karafka/pro/processing/partitioner.rb +58 -0
  90. data/lib/karafka/pro/processing/scheduler.rb +56 -0
  91. data/lib/karafka/pro/routing/builder_extensions.rb +30 -0
  92. data/lib/karafka/pro/routing/topic_extensions.rb +74 -0
  93. data/lib/karafka/pro.rb +13 -0
  94. data/lib/karafka/process.rb +1 -0
  95. data/lib/karafka/processing/coordinator.rb +103 -0
  96. data/lib/karafka/processing/coordinators_buffer.rb +54 -0
  97. data/lib/karafka/processing/executor.rb +126 -0
  98. data/lib/karafka/processing/executors_buffer.rb +88 -0
  99. data/lib/karafka/processing/jobs/base.rb +55 -0
  100. data/lib/karafka/processing/jobs/consume.rb +47 -0
  101. data/lib/karafka/processing/jobs/revoked.rb +22 -0
  102. data/lib/karafka/processing/jobs/shutdown.rb +23 -0
  103. data/lib/karafka/processing/jobs_builder.rb +29 -0
  104. data/lib/karafka/processing/jobs_queue.rb +144 -0
  105. data/lib/karafka/processing/partitioner.rb +22 -0
  106. data/lib/karafka/processing/result.rb +37 -0
  107. data/lib/karafka/processing/scheduler.rb +22 -0
  108. data/lib/karafka/processing/worker.rb +91 -0
  109. data/lib/karafka/processing/workers_batch.rb +27 -0
  110. data/lib/karafka/railtie.rb +127 -0
  111. data/lib/karafka/routing/builder.rb +26 -23
  112. data/lib/karafka/routing/consumer_group.rb +37 -17
  113. data/lib/karafka/routing/consumer_mapper.rb +1 -2
  114. data/lib/karafka/routing/proxy.rb +9 -16
  115. data/lib/karafka/routing/router.rb +1 -1
  116. data/lib/karafka/routing/subscription_group.rb +53 -0
  117. data/lib/karafka/routing/subscription_groups_builder.rb +54 -0
  118. data/lib/karafka/routing/topic.rb +65 -24
  119. data/lib/karafka/routing/topics.rb +38 -0
  120. data/lib/karafka/runner.rb +51 -0
  121. data/lib/karafka/serialization/json/deserializer.rb +6 -15
  122. data/lib/karafka/server.rb +67 -26
  123. data/lib/karafka/setup/config.rb +153 -175
  124. data/lib/karafka/status.rb +14 -5
  125. data/lib/karafka/templates/example_consumer.rb.erb +16 -0
  126. data/lib/karafka/templates/karafka.rb.erb +17 -55
  127. data/lib/karafka/time_trackers/base.rb +19 -0
  128. data/lib/karafka/time_trackers/pause.rb +92 -0
  129. data/lib/karafka/time_trackers/poll.rb +65 -0
  130. data/lib/karafka/version.rb +1 -1
  131. data/lib/karafka.rb +46 -16
  132. data.tar.gz.sig +0 -0
  133. metadata +145 -171
  134. metadata.gz.sig +0 -0
  135. data/.github/FUNDING.yml +0 -3
  136. data/MIT-LICENCE +0 -18
  137. data/certs/mensfeld.pem +0 -25
  138. data/lib/karafka/attributes_map.rb +0 -62
  139. data/lib/karafka/backends/inline.rb +0 -16
  140. data/lib/karafka/base_responder.rb +0 -226
  141. data/lib/karafka/cli/flow.rb +0 -48
  142. data/lib/karafka/code_reloader.rb +0 -67
  143. data/lib/karafka/connection/api_adapter.rb +0 -161
  144. data/lib/karafka/connection/batch_delegator.rb +0 -55
  145. data/lib/karafka/connection/builder.rb +0 -18
  146. data/lib/karafka/connection/message_delegator.rb +0 -36
  147. data/lib/karafka/consumers/batch_metadata.rb +0 -10
  148. data/lib/karafka/consumers/callbacks.rb +0 -71
  149. data/lib/karafka/consumers/includer.rb +0 -64
  150. data/lib/karafka/consumers/responders.rb +0 -24
  151. data/lib/karafka/consumers/single_params.rb +0 -15
  152. data/lib/karafka/contracts/responder_usage.rb +0 -54
  153. data/lib/karafka/fetcher.rb +0 -42
  154. data/lib/karafka/helpers/class_matcher.rb +0 -88
  155. data/lib/karafka/helpers/config_retriever.rb +0 -46
  156. data/lib/karafka/helpers/inflector.rb +0 -26
  157. data/lib/karafka/instrumentation/stdout_listener.rb +0 -140
  158. data/lib/karafka/params/batch_metadata.rb +0 -26
  159. data/lib/karafka/params/builders/batch_metadata.rb +0 -30
  160. data/lib/karafka/params/builders/params.rb +0 -38
  161. data/lib/karafka/params/builders/params_batch.rb +0 -25
  162. data/lib/karafka/params/params_batch.rb +0 -60
  163. data/lib/karafka/patches/ruby_kafka.rb +0 -47
  164. data/lib/karafka/persistence/client.rb +0 -29
  165. data/lib/karafka/persistence/consumers.rb +0 -45
  166. data/lib/karafka/persistence/topics.rb +0 -48
  167. data/lib/karafka/responders/builder.rb +0 -36
  168. data/lib/karafka/responders/topic.rb +0 -55
  169. data/lib/karafka/routing/topic_mapper.rb +0 -53
  170. data/lib/karafka/serialization/json/serializer.rb +0 -31
  171. data/lib/karafka/setup/configurators/water_drop.rb +0 -36
  172. data/lib/karafka/templates/application_responder.rb.erb +0 -11
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ module TimeTrackers
5
+ # Object used to keep track of time we've used running certain operations.
6
+ #
7
+ # @example Keep track of sleeping and stop after 3 seconds of 0.1 sleep intervals
8
+ # time_poll = Poll.new(3000)
9
+ # time_poll.start
10
+ #
11
+ # until time_poll.exceeded?
12
+ # time_poll.start
13
+ # puts "I have #{time_poll.remaining.to_i}ms remaining to sleep..."
14
+ # sleep(0.1)
15
+ # time_poll.checkpoint
16
+ # end
17
+ class Poll < Base
18
+ attr_reader :remaining, :attempts
19
+
20
+ # @param total_time [Integer] amount of milliseconds before we exceed the given time limit
21
+ # @return [TimeTracker] time poll instance
22
+ def initialize(total_time)
23
+ @remaining = total_time
24
+ @attempts = 0
25
+ super()
26
+ end
27
+
28
+ # @return [Boolean] did we exceed the time limit
29
+ def exceeded?
30
+ @remaining <= 0
31
+ end
32
+
33
+ # Starts time tracking.
34
+ def start
35
+ @attempts += 1
36
+ @started_at = now
37
+ end
38
+
39
+ # Stops time tracking of a given piece of code and updates the remaining time.
40
+ def checkpoint
41
+ @remaining -= (now - @started_at)
42
+ end
43
+
44
+ # @return [Boolean] If anything went wrong, can we retry after a backoff period or not
45
+ # (do we have enough time)
46
+ def retryable?
47
+ remaining > backoff_interval
48
+ end
49
+
50
+ # Sleeps for amount of time matching attempt, so we sleep more with each attempt in case of
51
+ # a retry.
52
+ def backoff
53
+ # Sleep requires seconds not ms
54
+ sleep(backoff_interval / 1_000.0)
55
+ end
56
+
57
+ private
58
+
59
+ # @return [Integer] milliseconds of the backoff time
60
+ def backoff_interval
61
+ 100 * attempts
62
+ end
63
+ end
64
+ end
65
+ end
@@ -3,5 +3,5 @@
3
3
  # Main module namespace
4
4
  module Karafka
5
5
  # Current Karafka version
6
- VERSION = '1.4.0'
6
+ VERSION = '2.0.10'
7
7
  end
data/lib/karafka.rb CHANGED
@@ -1,34 +1,48 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  %w[
4
+ karafka-core
4
5
  delegate
5
6
  English
7
+ rdkafka
6
8
  waterdrop
7
- kafka
8
- envlogic
9
9
  json
10
10
  thor
11
11
  forwardable
12
12
  fileutils
13
- dry-configurable
14
- dry-validation
15
- dry/events/publisher
16
- dry/inflector
17
- dry/monitor/notifications
18
- dry/core/constants
13
+ openssl
14
+ base64
15
+ date
16
+ singleton
19
17
  zeitwerk
20
18
  ].each(&method(:require))
21
19
 
22
- # Karafka library
20
+ # Karafka framework main namespace
23
21
  module Karafka
24
- extend Envlogic
25
-
26
22
  class << self
23
+ # @return [Karafka::Env] env instance that allows us to check environment
24
+ def env
25
+ @env ||= Env.new
26
+ end
27
+
28
+ # @param environment [String, Symbol] new environment that we want to set
29
+ # @return [Karafka::Env] env instance
30
+ # @example Assign new environment to Karafka::App
31
+ # Karafka::App.env = :production
32
+ def env=(environment)
33
+ env.replace(environment.to_s)
34
+ end
35
+
27
36
  # @return [Logger] logger that we want to use. Will use ::Karafka::Logger by default
28
37
  def logger
29
38
  @logger ||= App.config.logger
30
39
  end
31
40
 
41
+ # @return [WaterDrop::Producer] waterdrop messages producer
42
+ def producer
43
+ @producer ||= App.config.producer
44
+ end
45
+
32
46
  # @return [::Karafka::Monitor] monitor that we want to use
33
47
  def monitor
34
48
  @monitor ||= App.config.monitor
@@ -49,6 +63,11 @@ module Karafka
49
63
  Pathname.new(File.expand_path('karafka', __dir__))
50
64
  end
51
65
 
66
+ # @return [Boolean] true if there is a valid pro token present
67
+ def pro?
68
+ App.config.license.token != false
69
+ end
70
+
52
71
  # @return [String] path to a default file that contains booting procedure etc
53
72
  # @note By default it is a file called 'karafka.rb' but it can be specified as you wish if you
54
73
  # have Karafka that is merged into a Sinatra/Rails app and karafka.rb is taken.
@@ -64,9 +83,20 @@ module Karafka
64
83
  end
65
84
  end
66
85
 
67
- Zeitwerk::Loader
68
- .for_gem
69
- .tap(&:setup)
70
- .tap(&:eager_load)
86
+ loader = Zeitwerk::Loader.for_gem
87
+ # Do not load Rails extensions by default, this will be handled by Railtie if they are needed
88
+ loader.ignore(Karafka.gem_root.join('lib/active_job'))
89
+
90
+ begin
91
+ require 'karafka-license'
92
+ rescue LoadError
93
+ # Do not load pro components if we cannot load the license
94
+ # This is a preliminary check so autoload works as expected
95
+ # Later on the licenser will make sure to setup all the needed components anyhow
96
+ loader.ignore(Karafka.gem_root.join('lib/karafka/pro'))
97
+ end
71
98
 
72
- Kafka::Consumer.prepend(Karafka::Patches::RubyKafka)
99
+ # Do not load vendors instrumentation components. Those need to be required manually if needed
100
+ loader.ignore(Karafka.gem_root.join('lib/karafka/instrumentation/vendors'))
101
+ loader.setup
102
+ loader.eager_load
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,155 +1,76 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 2.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
8
- - Pavlo Vavruk
9
- - Adam Gwozdowski
10
8
  autorequire:
11
9
  bindir: bin
12
10
  cert_chain:
13
11
  - |
14
12
  -----BEGIN CERTIFICATE-----
15
- MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
16
- ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjAwODExMDkxNTM3WhcNMjEwODExMDkx
17
- NTM3WjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
18
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDCpXsCgmINb6lHBXXBdyrgsBPSxC4/
19
- 2H+weJ6L9CruTiv2+2/ZkQGtnLcDgrD14rdLIHK7t0o3EKYlDT5GhD/XUVhI15JE
20
- N7IqnPUgexe1fbZArwQ51afxz2AmPQN2BkB2oeQHXxnSWUGMhvcEZpfbxCCJH26w
21
- hS0Ccsma8yxA6hSlGVhFVDuCr7c2L1di6cK2CtIDpfDaWqnVNJEwBYHIxrCoWK5g
22
- sIGekVt/admS9gRhIMaIBg+Mshth5/DEyWO2QjteTodItlxfTctrfmiAl8X8T5JP
23
- VXeLp5SSOJ5JXE80nShMJp3RFnGw5fqjX/ffjtISYh78/By4xF3a25HdWH9+qO2Z
24
- tx0wSGc9/4gqNM0APQnjN/4YXrGZ4IeSjtE+OrrX07l0TiyikzSLFOkZCAp8oBJi
25
- Fhlosz8xQDJf7mhNxOaZziqASzp/hJTU/tuDKl5+ql2icnMv5iV/i6SlmvU29QNg
26
- LCV71pUv0pWzN+OZbHZKWepGhEQ3cG9MwvkCAwEAAaN3MHUwCQYDVR0TBAIwADAL
27
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFImGed2AXS070ohfRidiCEhXEUN+MB0GA1Ud
28
- EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
29
- c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBAKiHpwoENVrMi94V1zD4o8/6G3AU
30
- gWz4udkPYHTZLUy3dLznc/sNjdkJFWT3E6NKYq7c60EpJ0m0vAEg5+F5pmNOsvD3
31
- 2pXLj9kisEeYhR516HwXAvtngboUcb75skqvBCU++4Pu7BRAPjO1/ihLSBexbwSS
32
- fF+J5OWNuyHHCQp+kGPLtXJe2yUYyvSWDj3I2//Vk0VhNOIlaCS1+5/P3ZJThOtm
33
- zJUBI7h3HgovwRpcnmk2mXTmU4Zx/bCzX8EA6VY0khEvnmiq7S6eBF0H9qH8KyQ6
34
- EkVLpvmUDFcf/uNaBQdazEMB5jYtwoA8gQlANETNGPi51KlkukhKgaIEDMkBDJOx
35
- 65N7DzmkcyY0/GwjIVIxmRhcrCt1YeCUElmfFx0iida1/YRm6sB2AXqScc1+ECRi
36
- 2DND//YJUikn1zwbz1kT70XmHd97B4Eytpln7K+M1u2g1pHVEPW4owD/ammXNpUy
37
- nt70FcDD4yxJQ+0YNiHd0N8IcVBM1TMIVctMNQ==
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
38
37
  -----END CERTIFICATE-----
39
- date: 2020-09-05 00:00:00.000000000 Z
38
+ date: 2022-09-23 00:00:00.000000000 Z
40
39
  dependencies:
41
40
  - !ruby/object:Gem::Dependency
42
- name: dry-configurable
41
+ name: karafka-core
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.8'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.8'
55
- - !ruby/object:Gem::Dependency
56
- name: dry-inflector
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.1'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.1'
69
- - !ruby/object:Gem::Dependency
70
- name: dry-monitor
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.3'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.3'
83
- - !ruby/object:Gem::Dependency
84
- name: dry-validation
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.2'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.2'
97
- - !ruby/object:Gem::Dependency
98
- name: envlogic
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.1'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
44
+ - - ">="
109
45
  - !ruby/object:Gem::Version
110
- version: '1.1'
111
- - !ruby/object:Gem::Dependency
112
- name: irb
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
46
+ version: 2.0.2
47
+ - - "<"
116
48
  - !ruby/object:Gem::Version
117
- version: '1.0'
49
+ version: 3.0.0
118
50
  type: :runtime
119
51
  prerelease: false
120
52
  version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '1.0'
125
- - !ruby/object:Gem::Dependency
126
- name: rake
127
- requirement: !ruby/object:Gem::Requirement
128
53
  requirements:
129
54
  - - ">="
130
55
  - !ruby/object:Gem::Version
131
- version: '11.3'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
56
+ version: 2.0.2
57
+ - - "<"
137
58
  - !ruby/object:Gem::Version
138
- version: '11.3'
59
+ version: 3.0.0
139
60
  - !ruby/object:Gem::Dependency
140
- name: ruby-kafka
61
+ name: rdkafka
141
62
  requirement: !ruby/object:Gem::Requirement
142
63
  requirements:
143
64
  - - ">="
144
65
  - !ruby/object:Gem::Version
145
- version: 1.0.0
66
+ version: '0.12'
146
67
  type: :runtime
147
68
  prerelease: false
148
69
  version_requirements: !ruby/object:Gem::Requirement
149
70
  requirements:
150
71
  - - ">="
151
72
  - !ruby/object:Gem::Version
152
- version: 1.0.0
73
+ version: '0.12'
153
74
  - !ruby/object:Gem::Dependency
154
75
  name: thor
155
76
  requirement: !ruby/object:Gem::Requirement
@@ -168,35 +89,39 @@ dependencies:
168
89
  name: waterdrop
169
90
  requirement: !ruby/object:Gem::Requirement
170
91
  requirements:
171
- - - "~>"
92
+ - - ">="
172
93
  - !ruby/object:Gem::Version
173
- version: 1.4.0
94
+ version: 2.4.1
95
+ - - "<"
96
+ - !ruby/object:Gem::Version
97
+ version: 3.0.0
174
98
  type: :runtime
175
99
  prerelease: false
176
100
  version_requirements: !ruby/object:Gem::Requirement
177
101
  requirements:
178
- - - "~>"
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.4.1
105
+ - - "<"
179
106
  - !ruby/object:Gem::Version
180
- version: 1.4.0
107
+ version: 3.0.0
181
108
  - !ruby/object:Gem::Dependency
182
109
  name: zeitwerk
183
110
  requirement: !ruby/object:Gem::Requirement
184
111
  requirements:
185
112
  - - "~>"
186
113
  - !ruby/object:Gem::Version
187
- version: '2.1'
114
+ version: '2.3'
188
115
  type: :runtime
189
116
  prerelease: false
190
117
  version_requirements: !ruby/object:Gem::Requirement
191
118
  requirements:
192
119
  - - "~>"
193
120
  - !ruby/object:Gem::Version
194
- version: '2.1'
121
+ version: '2.3'
195
122
  description: Framework used to simplify Apache Kafka based Ruby applications development
196
123
  email:
197
- - maciej@mensfeld.pl
198
- - pavlo.vavruk@gmail.com
199
- - adam99g@gmail.com
124
+ - contact@karafka.io
200
125
  executables:
201
126
  - karafka
202
127
  extensions: []
@@ -205,7 +130,6 @@ files:
205
130
  - ".coditsu/ci.yml"
206
131
  - ".console_irbrc"
207
132
  - ".diffend.yml"
208
- - ".github/FUNDING.yml"
209
133
  - ".github/ISSUE_TEMPLATE/bug_report.md"
210
134
  - ".github/ISSUE_TEMPLATE/feature_request.md"
211
135
  - ".github/workflows/ci.yml"
@@ -218,91 +142,141 @@ files:
218
142
  - CONTRIBUTING.md
219
143
  - Gemfile
220
144
  - Gemfile.lock
221
- - MIT-LICENCE
145
+ - LICENSE
146
+ - LICENSE-COMM
147
+ - LICENSE-LGPL
222
148
  - README.md
149
+ - bin/benchmarks
150
+ - bin/create_token
151
+ - bin/integrations
223
152
  - bin/karafka
224
- - certs/mensfeld.pem
153
+ - bin/scenario
154
+ - bin/stress_many
155
+ - bin/stress_one
156
+ - certs/cert_chain.pem
157
+ - certs/karafka-pro.pem
225
158
  - config/errors.yml
226
159
  - docker-compose.yml
227
160
  - karafka.gemspec
161
+ - lib/active_job/karafka.rb
162
+ - lib/active_job/queue_adapters/karafka_adapter.rb
228
163
  - lib/karafka.rb
164
+ - lib/karafka/active_job/consumer.rb
165
+ - lib/karafka/active_job/dispatcher.rb
166
+ - lib/karafka/active_job/job_extensions.rb
167
+ - lib/karafka/active_job/job_options_contract.rb
168
+ - lib/karafka/active_job/routing/extensions.rb
169
+ - lib/karafka/admin.rb
229
170
  - lib/karafka/app.rb
230
- - lib/karafka/attributes_map.rb
231
- - lib/karafka/backends/inline.rb
232
171
  - lib/karafka/base_consumer.rb
233
- - lib/karafka/base_responder.rb
234
172
  - lib/karafka/cli.rb
235
173
  - lib/karafka/cli/base.rb
236
174
  - lib/karafka/cli/console.rb
237
- - lib/karafka/cli/flow.rb
238
175
  - lib/karafka/cli/info.rb
239
176
  - lib/karafka/cli/install.rb
240
177
  - lib/karafka/cli/server.rb
241
- - lib/karafka/code_reloader.rb
242
- - lib/karafka/connection/api_adapter.rb
243
- - lib/karafka/connection/batch_delegator.rb
244
- - lib/karafka/connection/builder.rb
245
178
  - lib/karafka/connection/client.rb
246
179
  - lib/karafka/connection/listener.rb
247
- - lib/karafka/connection/message_delegator.rb
248
- - lib/karafka/consumers/batch_metadata.rb
249
- - lib/karafka/consumers/callbacks.rb
250
- - lib/karafka/consumers/includer.rb
251
- - lib/karafka/consumers/responders.rb
252
- - lib/karafka/consumers/single_params.rb
180
+ - lib/karafka/connection/listeners_batch.rb
181
+ - lib/karafka/connection/messages_buffer.rb
182
+ - lib/karafka/connection/pauses_manager.rb
183
+ - lib/karafka/connection/raw_messages_buffer.rb
184
+ - lib/karafka/connection/rebalance_manager.rb
253
185
  - lib/karafka/contracts.rb
186
+ - lib/karafka/contracts/base.rb
254
187
  - lib/karafka/contracts/config.rb
255
188
  - lib/karafka/contracts/consumer_group.rb
256
189
  - lib/karafka/contracts/consumer_group_topic.rb
257
- - lib/karafka/contracts/responder_usage.rb
258
190
  - lib/karafka/contracts/server_cli_options.rb
191
+ - lib/karafka/env.rb
259
192
  - lib/karafka/errors.rb
260
- - lib/karafka/fetcher.rb
261
- - lib/karafka/helpers/class_matcher.rb
262
- - lib/karafka/helpers/config_retriever.rb
263
- - lib/karafka/helpers/inflector.rb
193
+ - lib/karafka/helpers/async.rb
194
+ - lib/karafka/helpers/colorize.rb
264
195
  - lib/karafka/helpers/multi_delegator.rb
196
+ - lib/karafka/instrumentation.rb
197
+ - lib/karafka/instrumentation/callbacks/error.rb
198
+ - lib/karafka/instrumentation/callbacks/statistics.rb
265
199
  - lib/karafka/instrumentation/logger.rb
200
+ - lib/karafka/instrumentation/logger_listener.rb
266
201
  - lib/karafka/instrumentation/monitor.rb
202
+ - lib/karafka/instrumentation/notifications.rb
267
203
  - lib/karafka/instrumentation/proctitle_listener.rb
268
- - lib/karafka/instrumentation/stdout_listener.rb
269
- - lib/karafka/params/batch_metadata.rb
270
- - lib/karafka/params/builders/batch_metadata.rb
271
- - lib/karafka/params/builders/params.rb
272
- - lib/karafka/params/builders/params_batch.rb
273
- - lib/karafka/params/metadata.rb
274
- - lib/karafka/params/params.rb
275
- - lib/karafka/params/params_batch.rb
276
- - lib/karafka/patches/ruby_kafka.rb
277
- - lib/karafka/persistence/client.rb
278
- - lib/karafka/persistence/consumers.rb
279
- - lib/karafka/persistence/topics.rb
204
+ - lib/karafka/instrumentation/vendors/datadog/dashboard.json
205
+ - lib/karafka/instrumentation/vendors/datadog/listener.rb
206
+ - lib/karafka/licenser.rb
207
+ - lib/karafka/messages/batch_metadata.rb
208
+ - lib/karafka/messages/builders/batch_metadata.rb
209
+ - lib/karafka/messages/builders/message.rb
210
+ - lib/karafka/messages/builders/messages.rb
211
+ - lib/karafka/messages/message.rb
212
+ - lib/karafka/messages/messages.rb
213
+ - lib/karafka/messages/metadata.rb
214
+ - lib/karafka/messages/seek.rb
215
+ - lib/karafka/patches/rdkafka/consumer.rb
216
+ - lib/karafka/pro.rb
217
+ - lib/karafka/pro/active_job/consumer.rb
218
+ - lib/karafka/pro/active_job/dispatcher.rb
219
+ - lib/karafka/pro/active_job/job_options_contract.rb
220
+ - lib/karafka/pro/base_consumer.rb
221
+ - lib/karafka/pro/contracts/base.rb
222
+ - lib/karafka/pro/contracts/consumer_group.rb
223
+ - lib/karafka/pro/contracts/consumer_group_topic.rb
224
+ - lib/karafka/pro/loader.rb
225
+ - lib/karafka/pro/performance_tracker.rb
226
+ - lib/karafka/pro/processing/coordinator.rb
227
+ - lib/karafka/pro/processing/jobs/consume_non_blocking.rb
228
+ - lib/karafka/pro/processing/jobs_builder.rb
229
+ - lib/karafka/pro/processing/partitioner.rb
230
+ - lib/karafka/pro/processing/scheduler.rb
231
+ - lib/karafka/pro/routing/builder_extensions.rb
232
+ - lib/karafka/pro/routing/topic_extensions.rb
280
233
  - lib/karafka/process.rb
281
- - lib/karafka/responders/builder.rb
282
- - lib/karafka/responders/topic.rb
234
+ - lib/karafka/processing/coordinator.rb
235
+ - lib/karafka/processing/coordinators_buffer.rb
236
+ - lib/karafka/processing/executor.rb
237
+ - lib/karafka/processing/executors_buffer.rb
238
+ - lib/karafka/processing/jobs/base.rb
239
+ - lib/karafka/processing/jobs/consume.rb
240
+ - lib/karafka/processing/jobs/revoked.rb
241
+ - lib/karafka/processing/jobs/shutdown.rb
242
+ - lib/karafka/processing/jobs_builder.rb
243
+ - lib/karafka/processing/jobs_queue.rb
244
+ - lib/karafka/processing/partitioner.rb
245
+ - lib/karafka/processing/result.rb
246
+ - lib/karafka/processing/scheduler.rb
247
+ - lib/karafka/processing/worker.rb
248
+ - lib/karafka/processing/workers_batch.rb
249
+ - lib/karafka/railtie.rb
283
250
  - lib/karafka/routing/builder.rb
284
251
  - lib/karafka/routing/consumer_group.rb
285
252
  - lib/karafka/routing/consumer_mapper.rb
286
253
  - lib/karafka/routing/proxy.rb
287
254
  - lib/karafka/routing/router.rb
255
+ - lib/karafka/routing/subscription_group.rb
256
+ - lib/karafka/routing/subscription_groups_builder.rb
288
257
  - lib/karafka/routing/topic.rb
289
- - lib/karafka/routing/topic_mapper.rb
258
+ - lib/karafka/routing/topics.rb
259
+ - lib/karafka/runner.rb
290
260
  - lib/karafka/serialization/json/deserializer.rb
291
- - lib/karafka/serialization/json/serializer.rb
292
261
  - lib/karafka/server.rb
293
262
  - lib/karafka/setup/config.rb
294
- - lib/karafka/setup/configurators/water_drop.rb
295
263
  - lib/karafka/setup/dsl.rb
296
264
  - lib/karafka/status.rb
297
265
  - lib/karafka/templates/application_consumer.rb.erb
298
- - lib/karafka/templates/application_responder.rb.erb
266
+ - lib/karafka/templates/example_consumer.rb.erb
299
267
  - lib/karafka/templates/karafka.rb.erb
268
+ - lib/karafka/time_trackers/base.rb
269
+ - lib/karafka/time_trackers/pause.rb
270
+ - lib/karafka/time_trackers/poll.rb
300
271
  - lib/karafka/version.rb
301
272
  - log/.gitkeep
302
- homepage: https://github.com/karafka/karafka
273
+ homepage: https://karafka.io
303
274
  licenses:
304
- - MIT
305
- metadata: {}
275
+ - LGPL-3.0
276
+ - Commercial
277
+ metadata:
278
+ source_code_uri: https://github.com/karafka/karafka
279
+ rubygems_mfa_required: 'true'
306
280
  post_install_message:
307
281
  rdoc_options: []
308
282
  require_paths:
@@ -311,15 +285,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
311
285
  requirements:
312
286
  - - ">="
313
287
  - !ruby/object:Gem::Version
314
- version: 2.5.0
288
+ version: 2.7.0
315
289
  required_rubygems_version: !ruby/object:Gem::Requirement
316
290
  requirements:
317
291
  - - ">="
318
292
  - !ruby/object:Gem::Version
319
293
  version: '0'
320
294
  requirements: []
321
- rubygems_version: 3.1.4
295
+ rubygems_version: 3.3.7
322
296
  signing_key:
323
297
  specification_version: 4
324
- summary: Ruby based framework for working with Apache Kafka
298
+ summary: Efficient Kafka processing framework for Ruby and Rails
325
299
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/.github/FUNDING.yml DELETED
@@ -1,3 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- open_collective: karafka
data/MIT-LICENCE DELETED
@@ -1,18 +0,0 @@
1
- Permission is hereby granted, free of charge, to any person obtaining
2
- a copy of this software and associated documentation files (the
3
- "Software"), to deal in the Software without restriction, including
4
- without limitation the rights to use, copy, modify, merge, publish,
5
- distribute, sublicense, and/or sell copies of the Software, and to
6
- permit persons to whom the Software is furnished to do so, subject to
7
- the following conditions:
8
-
9
- The above copyright notice and this permission notice shall be
10
- included in all copies or substantial portions of the Software.
11
-
12
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/certs/mensfeld.pem DELETED
@@ -1,25 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
3
- ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjAwODExMDkxNTM3WhcNMjEwODExMDkx
4
- NTM3WjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
5
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDCpXsCgmINb6lHBXXBdyrgsBPSxC4/
6
- 2H+weJ6L9CruTiv2+2/ZkQGtnLcDgrD14rdLIHK7t0o3EKYlDT5GhD/XUVhI15JE
7
- N7IqnPUgexe1fbZArwQ51afxz2AmPQN2BkB2oeQHXxnSWUGMhvcEZpfbxCCJH26w
8
- hS0Ccsma8yxA6hSlGVhFVDuCr7c2L1di6cK2CtIDpfDaWqnVNJEwBYHIxrCoWK5g
9
- sIGekVt/admS9gRhIMaIBg+Mshth5/DEyWO2QjteTodItlxfTctrfmiAl8X8T5JP
10
- VXeLp5SSOJ5JXE80nShMJp3RFnGw5fqjX/ffjtISYh78/By4xF3a25HdWH9+qO2Z
11
- tx0wSGc9/4gqNM0APQnjN/4YXrGZ4IeSjtE+OrrX07l0TiyikzSLFOkZCAp8oBJi
12
- Fhlosz8xQDJf7mhNxOaZziqASzp/hJTU/tuDKl5+ql2icnMv5iV/i6SlmvU29QNg
13
- LCV71pUv0pWzN+OZbHZKWepGhEQ3cG9MwvkCAwEAAaN3MHUwCQYDVR0TBAIwADAL
14
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFImGed2AXS070ohfRidiCEhXEUN+MB0GA1Ud
15
- EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
16
- c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBAKiHpwoENVrMi94V1zD4o8/6G3AU
17
- gWz4udkPYHTZLUy3dLznc/sNjdkJFWT3E6NKYq7c60EpJ0m0vAEg5+F5pmNOsvD3
18
- 2pXLj9kisEeYhR516HwXAvtngboUcb75skqvBCU++4Pu7BRAPjO1/ihLSBexbwSS
19
- fF+J5OWNuyHHCQp+kGPLtXJe2yUYyvSWDj3I2//Vk0VhNOIlaCS1+5/P3ZJThOtm
20
- zJUBI7h3HgovwRpcnmk2mXTmU4Zx/bCzX8EA6VY0khEvnmiq7S6eBF0H9qH8KyQ6
21
- EkVLpvmUDFcf/uNaBQdazEMB5jYtwoA8gQlANETNGPi51KlkukhKgaIEDMkBDJOx
22
- 65N7DzmkcyY0/GwjIVIxmRhcrCt1YeCUElmfFx0iida1/YRm6sB2AXqScc1+ECRi
23
- 2DND//YJUikn1zwbz1kT70XmHd97B4Eytpln7K+M1u2g1pHVEPW4owD/ammXNpUy
24
- nt70FcDD4yxJQ+0YNiHd0N8IcVBM1TMIVctMNQ==
25
- -----END CERTIFICATE-----