karafka 1.4.13 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +3 -3
  3. data/.github/workflows/ci.yml +85 -30
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +268 -7
  6. data/CONTRIBUTING.md +10 -19
  7. data/Gemfile +6 -0
  8. data/Gemfile.lock +44 -87
  9. data/LICENSE +17 -0
  10. data/LICENSE-COMM +89 -0
  11. data/LICENSE-LGPL +165 -0
  12. data/README.md +44 -48
  13. data/bin/benchmarks +85 -0
  14. data/bin/create_token +22 -0
  15. data/bin/integrations +237 -0
  16. data/bin/karafka +4 -0
  17. data/bin/scenario +29 -0
  18. data/bin/stress_many +13 -0
  19. data/bin/stress_one +13 -0
  20. data/bin/wait_for_kafka +20 -0
  21. data/certs/karafka-pro.pem +11 -0
  22. data/config/errors.yml +55 -40
  23. data/docker-compose.yml +39 -3
  24. data/karafka.gemspec +11 -17
  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 +31 -0
  32. data/lib/karafka/app.rb +15 -20
  33. data/lib/karafka/base_consumer.rb +181 -31
  34. data/lib/karafka/cli/base.rb +4 -4
  35. data/lib/karafka/cli/info.rb +43 -9
  36. data/lib/karafka/cli/install.rb +19 -10
  37. data/lib/karafka/cli/server.rb +17 -42
  38. data/lib/karafka/cli.rb +4 -11
  39. data/lib/karafka/connection/client.rb +385 -90
  40. data/lib/karafka/connection/listener.rb +246 -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 -189
  49. data/lib/karafka/contracts/consumer_group_topic.rb +34 -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_listener.rb +164 -0
  60. data/lib/karafka/instrumentation/monitor.rb +13 -61
  61. data/lib/karafka/instrumentation/notifications.rb +52 -0
  62. data/lib/karafka/instrumentation/proctitle_listener.rb +3 -3
  63. data/lib/karafka/instrumentation/vendors/datadog/dashboard.json +1 -0
  64. data/lib/karafka/instrumentation/vendors/datadog/listener.rb +232 -0
  65. data/lib/karafka/instrumentation.rb +21 -0
  66. data/lib/karafka/licenser.rb +75 -0
  67. data/lib/karafka/messages/batch_metadata.rb +45 -0
  68. data/lib/karafka/messages/builders/batch_metadata.rb +40 -0
  69. data/lib/karafka/messages/builders/message.rb +39 -0
  70. data/lib/karafka/messages/builders/messages.rb +32 -0
  71. data/lib/karafka/{params/params.rb → messages/message.rb} +7 -12
  72. data/lib/karafka/messages/messages.rb +64 -0
  73. data/lib/karafka/{params → messages}/metadata.rb +4 -6
  74. data/lib/karafka/messages/seek.rb +9 -0
  75. data/lib/karafka/patches/rdkafka/consumer.rb +22 -0
  76. data/lib/karafka/pro/active_job/consumer.rb +46 -0
  77. data/lib/karafka/pro/active_job/dispatcher.rb +61 -0
  78. data/lib/karafka/pro/active_job/job_options_contract.rb +32 -0
  79. data/lib/karafka/pro/base_consumer.rb +82 -0
  80. data/lib/karafka/pro/contracts/base.rb +21 -0
  81. data/lib/karafka/pro/contracts/consumer_group.rb +34 -0
  82. data/lib/karafka/pro/contracts/consumer_group_topic.rb +33 -0
  83. data/lib/karafka/pro/loader.rb +76 -0
  84. data/lib/karafka/pro/performance_tracker.rb +80 -0
  85. data/lib/karafka/pro/processing/coordinator.rb +72 -0
  86. data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +37 -0
  87. data/lib/karafka/pro/processing/jobs_builder.rb +32 -0
  88. data/lib/karafka/pro/processing/partitioner.rb +60 -0
  89. data/lib/karafka/pro/processing/scheduler.rb +56 -0
  90. data/lib/karafka/pro/routing/builder_extensions.rb +30 -0
  91. data/lib/karafka/pro/routing/topic_extensions.rb +38 -0
  92. data/lib/karafka/pro.rb +13 -0
  93. data/lib/karafka/process.rb +1 -0
  94. data/lib/karafka/processing/coordinator.rb +88 -0
  95. data/lib/karafka/processing/coordinators_buffer.rb +54 -0
  96. data/lib/karafka/processing/executor.rb +118 -0
  97. data/lib/karafka/processing/executors_buffer.rb +88 -0
  98. data/lib/karafka/processing/jobs/base.rb +51 -0
  99. data/lib/karafka/processing/jobs/consume.rb +42 -0
  100. data/lib/karafka/processing/jobs/revoked.rb +22 -0
  101. data/lib/karafka/processing/jobs/shutdown.rb +23 -0
  102. data/lib/karafka/processing/jobs_builder.rb +29 -0
  103. data/lib/karafka/processing/jobs_queue.rb +144 -0
  104. data/lib/karafka/processing/partitioner.rb +22 -0
  105. data/lib/karafka/processing/result.rb +29 -0
  106. data/lib/karafka/processing/scheduler.rb +22 -0
  107. data/lib/karafka/processing/worker.rb +88 -0
  108. data/lib/karafka/processing/workers_batch.rb +27 -0
  109. data/lib/karafka/railtie.rb +113 -0
  110. data/lib/karafka/routing/builder.rb +15 -24
  111. data/lib/karafka/routing/consumer_group.rb +11 -19
  112. data/lib/karafka/routing/consumer_mapper.rb +1 -2
  113. data/lib/karafka/routing/router.rb +1 -1
  114. data/lib/karafka/routing/subscription_group.rb +53 -0
  115. data/lib/karafka/routing/subscription_groups_builder.rb +53 -0
  116. data/lib/karafka/routing/topic.rb +61 -24
  117. data/lib/karafka/routing/topics.rb +38 -0
  118. data/lib/karafka/runner.rb +51 -0
  119. data/lib/karafka/serialization/json/deserializer.rb +6 -15
  120. data/lib/karafka/server.rb +67 -26
  121. data/lib/karafka/setup/config.rb +147 -175
  122. data/lib/karafka/status.rb +14 -5
  123. data/lib/karafka/templates/example_consumer.rb.erb +16 -0
  124. data/lib/karafka/templates/karafka.rb.erb +15 -51
  125. data/lib/karafka/time_trackers/base.rb +19 -0
  126. data/lib/karafka/time_trackers/pause.rb +92 -0
  127. data/lib/karafka/time_trackers/poll.rb +65 -0
  128. data/lib/karafka/version.rb +1 -1
  129. data/lib/karafka.rb +38 -17
  130. data.tar.gz.sig +0 -0
  131. metadata +118 -120
  132. metadata.gz.sig +0 -0
  133. data/MIT-LICENCE +0 -18
  134. data/lib/karafka/assignment_strategies/round_robin.rb +0 -13
  135. data/lib/karafka/attributes_map.rb +0 -63
  136. data/lib/karafka/backends/inline.rb +0 -16
  137. data/lib/karafka/base_responder.rb +0 -226
  138. data/lib/karafka/cli/flow.rb +0 -48
  139. data/lib/karafka/cli/missingno.rb +0 -19
  140. data/lib/karafka/code_reloader.rb +0 -67
  141. data/lib/karafka/connection/api_adapter.rb +0 -158
  142. data/lib/karafka/connection/batch_delegator.rb +0 -55
  143. data/lib/karafka/connection/builder.rb +0 -23
  144. data/lib/karafka/connection/message_delegator.rb +0 -36
  145. data/lib/karafka/consumers/batch_metadata.rb +0 -10
  146. data/lib/karafka/consumers/callbacks.rb +0 -71
  147. data/lib/karafka/consumers/includer.rb +0 -64
  148. data/lib/karafka/consumers/responders.rb +0 -24
  149. data/lib/karafka/consumers/single_params.rb +0 -15
  150. data/lib/karafka/contracts/responder_usage.rb +0 -54
  151. data/lib/karafka/fetcher.rb +0 -42
  152. data/lib/karafka/helpers/class_matcher.rb +0 -88
  153. data/lib/karafka/helpers/config_retriever.rb +0 -46
  154. data/lib/karafka/helpers/inflector.rb +0 -26
  155. data/lib/karafka/instrumentation/stdout_listener.rb +0 -140
  156. data/lib/karafka/params/batch_metadata.rb +0 -26
  157. data/lib/karafka/params/builders/batch_metadata.rb +0 -30
  158. data/lib/karafka/params/builders/params.rb +0 -38
  159. data/lib/karafka/params/builders/params_batch.rb +0 -25
  160. data/lib/karafka/params/params_batch.rb +0 -60
  161. data/lib/karafka/patches/ruby_kafka.rb +0 -47
  162. data/lib/karafka/persistence/client.rb +0 -29
  163. data/lib/karafka/persistence/consumers.rb +0 -45
  164. data/lib/karafka/persistence/topics.rb +0 -48
  165. data/lib/karafka/responders/builder.rb +0 -36
  166. data/lib/karafka/responders/topic.rb +0 -55
  167. data/lib/karafka/routing/topic_mapper.rb +0 -53
  168. data/lib/karafka/serialization/json/serializer.rb +0 -31
  169. data/lib/karafka/setup/configurators/water_drop.rb +0 -36
  170. data/lib/karafka/templates/application_responder.rb.erb +0 -11
metadata CHANGED
@@ -1,12 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: karafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.13
4
+ version: 2.0.0
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:
@@ -36,139 +34,93 @@ cert_chain:
36
34
  R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
37
35
  pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
38
36
  -----END CERTIFICATE-----
39
- date: 2022-02-19 00:00:00.000000000 Z
37
+ date: 2022-08-05 00:00:00.000000000 Z
40
38
  dependencies:
41
39
  - !ruby/object:Gem::Dependency
42
- name: dry-configurable
40
+ name: karafka-core
43
41
  requirement: !ruby/object:Gem::Requirement
44
42
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.13'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.13'
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.2'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.2'
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.5'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
43
+ - - ">="
81
44
  - !ruby/object:Gem::Version
82
- version: '0.5'
83
- - !ruby/object:Gem::Dependency
84
- name: dry-validation
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
45
+ version: 2.0.2
46
+ - - "<"
88
47
  - !ruby/object:Gem::Version
89
- version: '1.7'
48
+ version: 3.0.0
90
49
  type: :runtime
91
50
  prerelease: false
92
51
  version_requirements: !ruby/object:Gem::Requirement
93
52
  requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.7'
97
- - !ruby/object:Gem::Dependency
98
- name: envlogic
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
53
+ - - ">="
102
54
  - !ruby/object:Gem::Version
103
- version: '1.1'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
55
+ version: 2.0.2
56
+ - - "<"
109
57
  - !ruby/object:Gem::Version
110
- version: '1.1'
58
+ version: 3.0.0
111
59
  - !ruby/object:Gem::Dependency
112
- name: ruby-kafka
60
+ name: rdkafka
113
61
  requirement: !ruby/object:Gem::Requirement
114
62
  requirements:
115
63
  - - ">="
116
64
  - !ruby/object:Gem::Version
117
- version: 1.3.0
65
+ version: '0.12'
118
66
  type: :runtime
119
67
  prerelease: false
120
68
  version_requirements: !ruby/object:Gem::Requirement
121
69
  requirements:
122
70
  - - ">="
123
71
  - !ruby/object:Gem::Version
124
- version: 1.3.0
72
+ version: '0.12'
125
73
  - !ruby/object:Gem::Dependency
126
74
  name: thor
127
75
  requirement: !ruby/object:Gem::Requirement
128
76
  requirements:
129
77
  - - ">="
130
78
  - !ruby/object:Gem::Version
131
- version: '1.1'
79
+ version: '0.20'
132
80
  type: :runtime
133
81
  prerelease: false
134
82
  version_requirements: !ruby/object:Gem::Requirement
135
83
  requirements:
136
84
  - - ">="
137
85
  - !ruby/object:Gem::Version
138
- version: '1.1'
86
+ version: '0.20'
139
87
  - !ruby/object:Gem::Dependency
140
88
  name: waterdrop
141
89
  requirement: !ruby/object:Gem::Requirement
142
90
  requirements:
143
- - - "~>"
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: 2.4.1
94
+ - - "<"
144
95
  - !ruby/object:Gem::Version
145
- version: '1.4'
96
+ version: 3.0.0
146
97
  type: :runtime
147
98
  prerelease: false
148
99
  version_requirements: !ruby/object:Gem::Requirement
149
100
  requirements:
150
- - - "~>"
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.4.1
104
+ - - "<"
151
105
  - !ruby/object:Gem::Version
152
- version: '1.4'
106
+ version: 3.0.0
153
107
  - !ruby/object:Gem::Dependency
154
108
  name: zeitwerk
155
109
  requirement: !ruby/object:Gem::Requirement
156
110
  requirements:
157
111
  - - "~>"
158
112
  - !ruby/object:Gem::Version
159
- version: '2.4'
113
+ version: '2.3'
160
114
  type: :runtime
161
115
  prerelease: false
162
116
  version_requirements: !ruby/object:Gem::Requirement
163
117
  requirements:
164
118
  - - "~>"
165
119
  - !ruby/object:Gem::Version
166
- version: '2.4'
120
+ version: '2.3'
167
121
  description: Framework used to simplify Apache Kafka based Ruby applications development
168
122
  email:
169
123
  - maciej@mensfeld.pl
170
- - pavlo.vavruk@gmail.com
171
- - adam99g@gmail.com
172
124
  executables:
173
125
  - karafka
174
126
  extensions: []
@@ -189,92 +141,138 @@ files:
189
141
  - CONTRIBUTING.md
190
142
  - Gemfile
191
143
  - Gemfile.lock
192
- - MIT-LICENCE
144
+ - LICENSE
145
+ - LICENSE-COMM
146
+ - LICENSE-LGPL
193
147
  - README.md
148
+ - bin/benchmarks
149
+ - bin/create_token
150
+ - bin/integrations
194
151
  - bin/karafka
152
+ - bin/scenario
153
+ - bin/stress_many
154
+ - bin/stress_one
155
+ - bin/wait_for_kafka
156
+ - certs/karafka-pro.pem
195
157
  - certs/mensfeld.pem
196
158
  - config/errors.yml
197
159
  - docker-compose.yml
198
160
  - karafka.gemspec
161
+ - lib/active_job/karafka.rb
162
+ - lib/active_job/queue_adapters/karafka_adapter.rb
199
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
200
169
  - lib/karafka/app.rb
201
- - lib/karafka/assignment_strategies/round_robin.rb
202
- - lib/karafka/attributes_map.rb
203
- - lib/karafka/backends/inline.rb
204
170
  - lib/karafka/base_consumer.rb
205
- - lib/karafka/base_responder.rb
206
171
  - lib/karafka/cli.rb
207
172
  - lib/karafka/cli/base.rb
208
173
  - lib/karafka/cli/console.rb
209
- - lib/karafka/cli/flow.rb
210
174
  - lib/karafka/cli/info.rb
211
175
  - lib/karafka/cli/install.rb
212
- - lib/karafka/cli/missingno.rb
213
176
  - lib/karafka/cli/server.rb
214
- - lib/karafka/code_reloader.rb
215
- - lib/karafka/connection/api_adapter.rb
216
- - lib/karafka/connection/batch_delegator.rb
217
- - lib/karafka/connection/builder.rb
218
177
  - lib/karafka/connection/client.rb
219
178
  - lib/karafka/connection/listener.rb
220
- - lib/karafka/connection/message_delegator.rb
221
- - lib/karafka/consumers/batch_metadata.rb
222
- - lib/karafka/consumers/callbacks.rb
223
- - lib/karafka/consumers/includer.rb
224
- - lib/karafka/consumers/responders.rb
225
- - lib/karafka/consumers/single_params.rb
179
+ - lib/karafka/connection/listeners_batch.rb
180
+ - lib/karafka/connection/messages_buffer.rb
181
+ - lib/karafka/connection/pauses_manager.rb
182
+ - lib/karafka/connection/raw_messages_buffer.rb
183
+ - lib/karafka/connection/rebalance_manager.rb
226
184
  - lib/karafka/contracts.rb
185
+ - lib/karafka/contracts/base.rb
227
186
  - lib/karafka/contracts/config.rb
228
187
  - lib/karafka/contracts/consumer_group.rb
229
188
  - lib/karafka/contracts/consumer_group_topic.rb
230
- - lib/karafka/contracts/responder_usage.rb
231
189
  - lib/karafka/contracts/server_cli_options.rb
190
+ - lib/karafka/env.rb
232
191
  - lib/karafka/errors.rb
233
- - lib/karafka/fetcher.rb
234
- - lib/karafka/helpers/class_matcher.rb
235
- - lib/karafka/helpers/config_retriever.rb
236
- - lib/karafka/helpers/inflector.rb
192
+ - lib/karafka/helpers/async.rb
193
+ - lib/karafka/helpers/colorize.rb
237
194
  - lib/karafka/helpers/multi_delegator.rb
195
+ - lib/karafka/instrumentation.rb
196
+ - lib/karafka/instrumentation/callbacks/error.rb
197
+ - lib/karafka/instrumentation/callbacks/statistics.rb
238
198
  - lib/karafka/instrumentation/logger.rb
199
+ - lib/karafka/instrumentation/logger_listener.rb
239
200
  - lib/karafka/instrumentation/monitor.rb
201
+ - lib/karafka/instrumentation/notifications.rb
240
202
  - lib/karafka/instrumentation/proctitle_listener.rb
241
- - lib/karafka/instrumentation/stdout_listener.rb
242
- - lib/karafka/params/batch_metadata.rb
243
- - lib/karafka/params/builders/batch_metadata.rb
244
- - lib/karafka/params/builders/params.rb
245
- - lib/karafka/params/builders/params_batch.rb
246
- - lib/karafka/params/metadata.rb
247
- - lib/karafka/params/params.rb
248
- - lib/karafka/params/params_batch.rb
249
- - lib/karafka/patches/ruby_kafka.rb
250
- - lib/karafka/persistence/client.rb
251
- - lib/karafka/persistence/consumers.rb
252
- - lib/karafka/persistence/topics.rb
203
+ - lib/karafka/instrumentation/vendors/datadog/dashboard.json
204
+ - lib/karafka/instrumentation/vendors/datadog/listener.rb
205
+ - lib/karafka/licenser.rb
206
+ - lib/karafka/messages/batch_metadata.rb
207
+ - lib/karafka/messages/builders/batch_metadata.rb
208
+ - lib/karafka/messages/builders/message.rb
209
+ - lib/karafka/messages/builders/messages.rb
210
+ - lib/karafka/messages/message.rb
211
+ - lib/karafka/messages/messages.rb
212
+ - lib/karafka/messages/metadata.rb
213
+ - lib/karafka/messages/seek.rb
214
+ - lib/karafka/patches/rdkafka/consumer.rb
215
+ - lib/karafka/pro.rb
216
+ - lib/karafka/pro/active_job/consumer.rb
217
+ - lib/karafka/pro/active_job/dispatcher.rb
218
+ - lib/karafka/pro/active_job/job_options_contract.rb
219
+ - lib/karafka/pro/base_consumer.rb
220
+ - lib/karafka/pro/contracts/base.rb
221
+ - lib/karafka/pro/contracts/consumer_group.rb
222
+ - lib/karafka/pro/contracts/consumer_group_topic.rb
223
+ - lib/karafka/pro/loader.rb
224
+ - lib/karafka/pro/performance_tracker.rb
225
+ - lib/karafka/pro/processing/coordinator.rb
226
+ - lib/karafka/pro/processing/jobs/consume_non_blocking.rb
227
+ - lib/karafka/pro/processing/jobs_builder.rb
228
+ - lib/karafka/pro/processing/partitioner.rb
229
+ - lib/karafka/pro/processing/scheduler.rb
230
+ - lib/karafka/pro/routing/builder_extensions.rb
231
+ - lib/karafka/pro/routing/topic_extensions.rb
253
232
  - lib/karafka/process.rb
254
- - lib/karafka/responders/builder.rb
255
- - lib/karafka/responders/topic.rb
233
+ - lib/karafka/processing/coordinator.rb
234
+ - lib/karafka/processing/coordinators_buffer.rb
235
+ - lib/karafka/processing/executor.rb
236
+ - lib/karafka/processing/executors_buffer.rb
237
+ - lib/karafka/processing/jobs/base.rb
238
+ - lib/karafka/processing/jobs/consume.rb
239
+ - lib/karafka/processing/jobs/revoked.rb
240
+ - lib/karafka/processing/jobs/shutdown.rb
241
+ - lib/karafka/processing/jobs_builder.rb
242
+ - lib/karafka/processing/jobs_queue.rb
243
+ - lib/karafka/processing/partitioner.rb
244
+ - lib/karafka/processing/result.rb
245
+ - lib/karafka/processing/scheduler.rb
246
+ - lib/karafka/processing/worker.rb
247
+ - lib/karafka/processing/workers_batch.rb
248
+ - lib/karafka/railtie.rb
256
249
  - lib/karafka/routing/builder.rb
257
250
  - lib/karafka/routing/consumer_group.rb
258
251
  - lib/karafka/routing/consumer_mapper.rb
259
252
  - lib/karafka/routing/proxy.rb
260
253
  - lib/karafka/routing/router.rb
254
+ - lib/karafka/routing/subscription_group.rb
255
+ - lib/karafka/routing/subscription_groups_builder.rb
261
256
  - lib/karafka/routing/topic.rb
262
- - lib/karafka/routing/topic_mapper.rb
257
+ - lib/karafka/routing/topics.rb
258
+ - lib/karafka/runner.rb
263
259
  - lib/karafka/serialization/json/deserializer.rb
264
- - lib/karafka/serialization/json/serializer.rb
265
260
  - lib/karafka/server.rb
266
261
  - lib/karafka/setup/config.rb
267
- - lib/karafka/setup/configurators/water_drop.rb
268
262
  - lib/karafka/setup/dsl.rb
269
263
  - lib/karafka/status.rb
270
264
  - lib/karafka/templates/application_consumer.rb.erb
271
- - lib/karafka/templates/application_responder.rb.erb
265
+ - lib/karafka/templates/example_consumer.rb.erb
272
266
  - lib/karafka/templates/karafka.rb.erb
267
+ - lib/karafka/time_trackers/base.rb
268
+ - lib/karafka/time_trackers/pause.rb
269
+ - lib/karafka/time_trackers/poll.rb
273
270
  - lib/karafka/version.rb
274
271
  - log/.gitkeep
275
272
  homepage: https://karafka.io
276
273
  licenses:
277
- - MIT
274
+ - LGPL-3.0
275
+ - Commercial
278
276
  metadata:
279
277
  source_code_uri: https://github.com/karafka/karafka
280
278
  rubygems_mfa_required: 'true'
@@ -286,15 +284,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
286
284
  requirements:
287
285
  - - ">="
288
286
  - !ruby/object:Gem::Version
289
- version: '2.7'
287
+ version: 2.7.0
290
288
  required_rubygems_version: !ruby/object:Gem::Requirement
291
289
  requirements:
292
290
  - - ">="
293
291
  - !ruby/object:Gem::Version
294
292
  version: '0'
295
293
  requirements: []
296
- rubygems_version: 3.3.3
294
+ rubygems_version: 3.3.7
297
295
  signing_key:
298
296
  specification_version: 4
299
- summary: Ruby based framework for working with Apache Kafka
297
+ summary: Efficient Kafka processing framework for Ruby and Rails
300
298
  test_files: []
metadata.gz.sig CHANGED
Binary file
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.
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Karafka
4
- # Strategies for Kafka partitions assignments
5
- module AssignmentStrategies
6
- # Standard RoundRobin strategy
7
- class RoundRobin < SimpleDelegator
8
- def initialize
9
- super(Kafka::RoundRobinAssignmentStrategy.new)
10
- end
11
- end
12
- end
13
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Karafka
4
- # Both Karafka and Ruby-Kafka contain a lot of settings that can be applied on multiple
5
- # levels. In Karafka that is on consumer group and on the topic level. In Ruby-Kafka it
6
- # is on consumer, subscription and consumption levels. In order to maintain an order
7
- # in managing those settings, this module was created. It contains details on what setting
8
- # where should go and which layer (both on Karafka and Ruby-Kafka) is responsible for
9
- # setting it and sending it forward
10
- # @note Settings presented here cover all the settings that are being used across Karafka
11
- module AttributesMap
12
- class << self
13
- # What settings should go where in ruby-kafka
14
- # @return [Hash] hash with proper sections on what to proxy where in Ruby-Kafka
15
- # @note All other settings will be passed to Kafka.new method invocation.
16
- # All elements in this hash are just edge cases
17
- def api_adapter
18
- {
19
- consumer: %i[
20
- session_timeout offset_commit_interval offset_commit_threshold
21
- offset_retention_time heartbeat_interval fetcher_max_queue_size
22
- assignment_strategy
23
- ],
24
- subscribe: %i[start_from_beginning max_bytes_per_partition],
25
- consumption: %i[min_bytes max_bytes max_wait_time],
26
- pause: %i[pause_timeout pause_max_timeout pause_exponential_backoff],
27
- # All the options that are under kafka config namespace, but are not used
28
- # directly with kafka api, but from the Karafka user perspective, they are
29
- # still related to kafka. They should not be proxied anywhere
30
- ignored: %i[reconnect_timeout automatically_mark_as_consumed]
31
- }
32
- end
33
-
34
- # @return [Array<Symbol>] properties that can be set on a per topic level
35
- def topic
36
- (api_adapter[:subscribe] + %i[
37
- backend
38
- name
39
- deserializer
40
- responder
41
- batch_consuming
42
- ]).uniq
43
- end
44
-
45
- # @return [Array<Symbol>] properties that can be set on a per consumer group level
46
- # @note Note that there are settings directly extracted from the config kafka namespace
47
- # I did this that way, so I won't have to repeat same setting keys over and over again
48
- # Thanks to this solution, if any new setting is available for ruby-kafka, we just need
49
- # to add it to our configuration class and it will be handled automatically.
50
- def consumer_group
51
- # @note We don't ignore the api_adapter[:ignored] values as they should be ignored
52
- # only when proxying details go ruby-kafka. We use ignored fields internally in karafka
53
- ignored_settings = api_adapter[:subscribe]
54
- defined_settings = api_adapter.values.flatten
55
- karafka_settings = %i[batch_fetching]
56
-
57
- dynamically_proxied = Karafka::Setup::Config.config.kafka.to_h.keys
58
-
59
- (defined_settings + dynamically_proxied).uniq + karafka_settings - ignored_settings
60
- end
61
- end
62
- end
63
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Karafka
4
- # Namespace for all different backends Karafka supports
5
- module Backends
6
- # Backend that just runs stuff asap without any scheduling
7
- module Inline
8
- private
9
-
10
- # Executes consume code immediately (without enqueuing)
11
- def process
12
- Karafka.monitor.instrument('backends.inline.process', caller: self) { consume }
13
- end
14
- end
15
- end
16
- end