karafka 1.4.13 → 2.0.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.
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