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.
Files changed (246) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/FUNDING.yml +1 -0
  4. data/.github/workflows/ci.yml +40 -16
  5. data/.rspec +4 -0
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +459 -796
  8. data/Gemfile +3 -2
  9. data/Gemfile.lock +44 -32
  10. data/LICENSE +1 -1
  11. data/README.md +22 -17
  12. data/bin/integrations +86 -26
  13. data/bin/karafka +1 -13
  14. data/bin/rspecs +6 -0
  15. data/bin/verify_license_integrity +37 -0
  16. data/certs/cert_chain.pem +26 -0
  17. data/config/{errors.yml → locales/errors.yml} +34 -6
  18. data/config/locales/pro_errors.yml +34 -0
  19. data/docker-compose.yml +4 -30
  20. data/karafka.gemspec +17 -10
  21. data/lib/active_job/karafka.rb +3 -7
  22. data/lib/active_job/queue_adapters/karafka_adapter.rb +7 -1
  23. data/lib/karafka/active_job/consumer.rb +29 -6
  24. data/lib/karafka/active_job/current_attributes/loading.rb +36 -0
  25. data/lib/karafka/active_job/current_attributes/persistence.rb +28 -0
  26. data/lib/karafka/active_job/current_attributes.rb +42 -0
  27. data/lib/karafka/active_job/dispatcher.rb +34 -3
  28. data/lib/karafka/active_job/job_options_contract.rb +13 -2
  29. data/lib/karafka/admin.rb +246 -0
  30. data/lib/karafka/app.rb +30 -7
  31. data/lib/karafka/base_consumer.rb +124 -82
  32. data/lib/karafka/cli/base.rb +20 -0
  33. data/lib/karafka/cli/console.rb +13 -8
  34. data/lib/karafka/cli/info.rb +3 -2
  35. data/lib/karafka/cli/server.rb +55 -8
  36. data/lib/karafka/cli/topics.rb +146 -0
  37. data/lib/karafka/connection/client.rb +118 -61
  38. data/lib/karafka/connection/consumer_group_coordinator.rb +48 -0
  39. data/lib/karafka/connection/listener.rb +78 -30
  40. data/lib/karafka/connection/listeners_batch.rb +18 -2
  41. data/lib/karafka/connection/rebalance_manager.rb +3 -0
  42. data/lib/karafka/contracts/config.rb +1 -1
  43. data/lib/karafka/contracts/consumer_group.rb +22 -9
  44. data/lib/karafka/contracts/server_cli_options.rb +71 -11
  45. data/lib/karafka/contracts/topic.rb +65 -0
  46. data/lib/karafka/contracts.rb +1 -1
  47. data/lib/karafka/embedded.rb +36 -0
  48. data/lib/karafka/errors.rb +6 -4
  49. data/lib/karafka/helpers/colorize.rb +6 -0
  50. data/lib/karafka/instrumentation/callbacks/error.rb +3 -4
  51. data/lib/karafka/instrumentation/callbacks/statistics.rb +14 -4
  52. data/lib/karafka/instrumentation/logger_listener.rb +151 -22
  53. data/lib/karafka/instrumentation/notifications.rb +26 -7
  54. data/lib/karafka/instrumentation/proctitle_listener.rb +7 -16
  55. data/lib/karafka/instrumentation/vendors/datadog/dashboard.json +1 -1
  56. data/lib/karafka/instrumentation/vendors/datadog/logger_listener.rb +153 -0
  57. data/lib/karafka/instrumentation/vendors/datadog/{listener.rb → metrics_listener.rb} +62 -35
  58. data/lib/karafka/instrumentation/vendors/kubernetes/liveness_listener.rb +166 -0
  59. data/lib/karafka/licenser.rb +53 -50
  60. data/lib/karafka/messages/builders/batch_metadata.rb +8 -8
  61. data/lib/karafka/messages/builders/messages.rb +6 -2
  62. data/lib/karafka/messages/message.rb +14 -2
  63. data/lib/karafka/messages/messages.rb +5 -0
  64. data/lib/karafka/messages/parser.rb +14 -0
  65. data/lib/karafka/patches/rdkafka/bindings.rb +132 -0
  66. data/lib/karafka/pro/active_job/consumer.rb +10 -9
  67. data/lib/karafka/pro/active_job/dispatcher.rb +28 -3
  68. data/lib/karafka/pro/active_job/job_options_contract.rb +16 -3
  69. data/lib/karafka/pro/encryption/cipher.rb +58 -0
  70. data/lib/karafka/pro/encryption/contracts/config.rb +79 -0
  71. data/lib/karafka/pro/encryption/errors.rb +24 -0
  72. data/lib/karafka/pro/encryption/messages/middleware.rb +46 -0
  73. data/lib/karafka/pro/encryption/messages/parser.rb +56 -0
  74. data/lib/karafka/pro/encryption/setup/config.rb +48 -0
  75. data/lib/karafka/pro/encryption.rb +47 -0
  76. data/lib/karafka/pro/iterator.rb +253 -0
  77. data/lib/karafka/pro/loader.rb +52 -26
  78. data/lib/karafka/pro/performance_tracker.rb +10 -6
  79. data/lib/karafka/pro/processing/collapser.rb +62 -0
  80. data/lib/karafka/pro/processing/coordinator.rb +92 -16
  81. data/lib/karafka/pro/processing/filters/base.rb +61 -0
  82. data/lib/karafka/pro/processing/filters/delayer.rb +70 -0
  83. data/lib/karafka/pro/processing/filters/expirer.rb +51 -0
  84. data/lib/karafka/pro/processing/filters/throttler.rb +84 -0
  85. data/lib/karafka/pro/processing/filters/virtual_limiter.rb +52 -0
  86. data/lib/karafka/pro/processing/filters_applier.rb +104 -0
  87. data/lib/karafka/pro/processing/jobs/consume_non_blocking.rb +7 -5
  88. data/lib/karafka/pro/processing/jobs/revoked_non_blocking.rb +37 -0
  89. data/lib/karafka/pro/processing/jobs_builder.rb +22 -4
  90. data/lib/karafka/pro/processing/partitioner.rb +33 -24
  91. data/lib/karafka/pro/processing/scheduler.rb +27 -8
  92. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom.rb +68 -0
  93. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_lrj_mom_vp.rb +74 -0
  94. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom.rb +72 -0
  95. data/lib/karafka/pro/processing/strategies/aj/dlq_ftr_mom_vp.rb +76 -0
  96. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom.rb +64 -0
  97. data/lib/karafka/pro/processing/strategies/aj/dlq_lrj_mom_vp.rb +68 -0
  98. data/lib/karafka/pro/processing/strategies/aj/dlq_mom.rb +64 -0
  99. data/lib/karafka/pro/processing/strategies/aj/dlq_mom_vp.rb +69 -0
  100. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom.rb +38 -0
  101. data/lib/karafka/pro/processing/strategies/aj/ftr_lrj_mom_vp.rb +64 -0
  102. data/lib/karafka/pro/processing/strategies/aj/ftr_mom.rb +38 -0
  103. data/lib/karafka/pro/processing/strategies/aj/ftr_mom_vp.rb +58 -0
  104. data/lib/karafka/pro/processing/strategies/aj/lrj_mom.rb +37 -0
  105. data/lib/karafka/pro/processing/strategies/aj/lrj_mom_vp.rb +79 -0
  106. data/lib/karafka/pro/processing/strategies/aj/mom.rb +36 -0
  107. data/lib/karafka/pro/processing/strategies/aj/mom_vp.rb +52 -0
  108. data/lib/karafka/pro/processing/strategies/base.rb +26 -0
  109. data/lib/karafka/pro/processing/strategies/default.rb +105 -0
  110. data/lib/karafka/pro/processing/strategies/dlq/default.rb +131 -0
  111. data/lib/karafka/pro/processing/strategies/dlq/ftr.rb +61 -0
  112. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj.rb +75 -0
  113. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom.rb +71 -0
  114. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_mom_vp.rb +43 -0
  115. data/lib/karafka/pro/processing/strategies/dlq/ftr_lrj_vp.rb +41 -0
  116. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom.rb +69 -0
  117. data/lib/karafka/pro/processing/strategies/dlq/ftr_mom_vp.rb +41 -0
  118. data/lib/karafka/pro/processing/strategies/dlq/ftr_vp.rb +40 -0
  119. data/lib/karafka/pro/processing/strategies/dlq/lrj.rb +63 -0
  120. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom.rb +63 -0
  121. data/lib/karafka/pro/processing/strategies/dlq/lrj_mom_vp.rb +36 -0
  122. data/lib/karafka/pro/processing/strategies/dlq/lrj_vp.rb +39 -0
  123. data/lib/karafka/pro/processing/strategies/dlq/mom.rb +68 -0
  124. data/lib/karafka/pro/processing/strategies/dlq/mom_vp.rb +37 -0
  125. data/lib/karafka/pro/processing/strategies/dlq/vp.rb +40 -0
  126. data/lib/karafka/pro/processing/strategies/ftr/default.rb +104 -0
  127. data/lib/karafka/pro/processing/strategies/ftr/vp.rb +40 -0
  128. data/lib/karafka/pro/processing/strategies/lrj/default.rb +87 -0
  129. data/lib/karafka/pro/processing/strategies/lrj/ftr.rb +69 -0
  130. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom.rb +67 -0
  131. data/lib/karafka/pro/processing/strategies/lrj/ftr_mom_vp.rb +40 -0
  132. data/lib/karafka/pro/processing/strategies/lrj/ftr_vp.rb +39 -0
  133. data/lib/karafka/pro/processing/strategies/lrj/mom.rb +80 -0
  134. data/lib/karafka/pro/processing/strategies/lrj/mom_vp.rb +38 -0
  135. data/lib/karafka/pro/processing/strategies/lrj/vp.rb +36 -0
  136. data/lib/karafka/pro/processing/strategies/mom/default.rb +46 -0
  137. data/lib/karafka/pro/processing/strategies/mom/ftr.rb +53 -0
  138. data/lib/karafka/pro/processing/strategies/mom/ftr_vp.rb +37 -0
  139. data/lib/karafka/pro/processing/strategies/mom/vp.rb +35 -0
  140. data/lib/karafka/pro/processing/strategies/vp/default.rb +104 -0
  141. data/lib/karafka/pro/{contracts/base.rb → processing/strategies.rb} +6 -5
  142. data/lib/karafka/pro/processing/strategy_selector.rb +84 -0
  143. data/lib/karafka/pro/processing/virtual_offset_manager.rb +147 -0
  144. data/lib/karafka/pro/routing/features/base.rb +24 -0
  145. data/lib/karafka/pro/routing/features/dead_letter_queue/contract.rb +50 -0
  146. data/lib/karafka/pro/routing/features/dead_letter_queue.rb +27 -0
  147. data/lib/karafka/pro/routing/{builder_extensions.rb → features/delaying/config.rb} +8 -11
  148. data/lib/karafka/pro/routing/features/delaying/contract.rb +38 -0
  149. data/lib/karafka/pro/routing/features/delaying/topic.rb +59 -0
  150. data/lib/karafka/pro/routing/features/delaying.rb +29 -0
  151. data/lib/karafka/pro/routing/features/expiring/config.rb +27 -0
  152. data/lib/karafka/pro/routing/features/expiring/contract.rb +38 -0
  153. data/lib/karafka/pro/routing/features/expiring/topic.rb +59 -0
  154. data/lib/karafka/pro/routing/features/expiring.rb +27 -0
  155. data/lib/karafka/pro/routing/features/filtering/config.rb +40 -0
  156. data/lib/karafka/pro/routing/features/filtering/contract.rb +41 -0
  157. data/lib/karafka/pro/routing/features/filtering/topic.rb +51 -0
  158. data/lib/karafka/pro/routing/features/filtering.rb +27 -0
  159. data/lib/karafka/pro/routing/features/long_running_job/config.rb +28 -0
  160. data/lib/karafka/pro/routing/features/long_running_job/contract.rb +37 -0
  161. data/lib/karafka/pro/routing/features/long_running_job/topic.rb +42 -0
  162. data/lib/karafka/pro/routing/features/long_running_job.rb +28 -0
  163. data/lib/karafka/pro/routing/features/throttling/config.rb +32 -0
  164. data/lib/karafka/pro/routing/features/throttling/contract.rb +41 -0
  165. data/lib/karafka/pro/routing/features/throttling/topic.rb +69 -0
  166. data/lib/karafka/pro/routing/features/throttling.rb +30 -0
  167. data/lib/karafka/pro/routing/features/virtual_partitions/config.rb +30 -0
  168. data/lib/karafka/pro/routing/features/virtual_partitions/contract.rb +52 -0
  169. data/lib/karafka/pro/routing/features/virtual_partitions/topic.rb +56 -0
  170. data/lib/karafka/pro/routing/features/virtual_partitions.rb +27 -0
  171. data/lib/karafka/process.rb +23 -8
  172. data/lib/karafka/processing/coordinator.rb +102 -23
  173. data/lib/karafka/processing/coordinators_buffer.rb +5 -1
  174. data/lib/karafka/processing/executor.rb +51 -21
  175. data/lib/karafka/processing/executors_buffer.rb +10 -26
  176. data/lib/karafka/processing/jobs/base.rb +6 -2
  177. data/lib/karafka/processing/jobs/consume.rb +8 -5
  178. data/lib/karafka/processing/jobs/idle.rb +24 -0
  179. data/lib/karafka/processing/jobs_builder.rb +2 -3
  180. data/lib/karafka/processing/jobs_queue.rb +14 -8
  181. data/lib/karafka/processing/partitioner.rb +3 -1
  182. data/lib/karafka/processing/result.rb +14 -1
  183. data/lib/karafka/processing/strategies/aj_dlq_mom.rb +44 -0
  184. data/lib/karafka/processing/strategies/aj_mom.rb +21 -0
  185. data/lib/karafka/processing/strategies/base.rb +52 -0
  186. data/lib/karafka/processing/strategies/default.rb +142 -0
  187. data/lib/karafka/processing/strategies/dlq.rb +88 -0
  188. data/lib/karafka/processing/strategies/dlq_mom.rb +49 -0
  189. data/lib/karafka/processing/strategies/mom.rb +29 -0
  190. data/lib/karafka/processing/strategy_selector.rb +47 -0
  191. data/lib/karafka/processing/worker.rb +8 -3
  192. data/lib/karafka/railtie.rb +24 -12
  193. data/lib/karafka/routing/activity_manager.rb +84 -0
  194. data/lib/karafka/routing/builder.rb +20 -0
  195. data/lib/karafka/routing/consumer_group.rb +38 -4
  196. data/lib/karafka/routing/consumer_mapper.rb +0 -10
  197. data/lib/karafka/routing/features/active_job/builder.rb +33 -0
  198. data/lib/karafka/routing/features/active_job/config.rb +15 -0
  199. data/lib/karafka/routing/features/active_job/contract.rb +41 -0
  200. data/lib/karafka/routing/features/active_job/topic.rb +33 -0
  201. data/lib/karafka/routing/features/active_job.rb +13 -0
  202. data/lib/karafka/routing/features/base/expander.rb +53 -0
  203. data/lib/karafka/routing/features/base.rb +34 -0
  204. data/lib/karafka/routing/features/dead_letter_queue/config.rb +19 -0
  205. data/lib/karafka/routing/features/dead_letter_queue/contract.rb +42 -0
  206. data/lib/karafka/routing/features/dead_letter_queue/topic.rb +41 -0
  207. data/lib/karafka/routing/features/dead_letter_queue.rb +16 -0
  208. data/lib/karafka/routing/features/declaratives/config.rb +18 -0
  209. data/lib/karafka/routing/features/declaratives/contract.rb +30 -0
  210. data/lib/karafka/routing/features/declaratives/topic.rb +44 -0
  211. data/lib/karafka/routing/features/declaratives.rb +14 -0
  212. data/lib/karafka/routing/features/manual_offset_management/config.rb +15 -0
  213. data/lib/karafka/routing/features/manual_offset_management/contract.rb +24 -0
  214. data/lib/karafka/routing/features/manual_offset_management/topic.rb +35 -0
  215. data/lib/karafka/routing/features/manual_offset_management.rb +18 -0
  216. data/lib/karafka/routing/proxy.rb +18 -20
  217. data/lib/karafka/routing/router.rb +27 -2
  218. data/lib/karafka/routing/subscription_group.rb +43 -5
  219. data/lib/karafka/routing/subscription_groups_builder.rb +6 -1
  220. data/lib/karafka/routing/topic.rb +17 -5
  221. data/lib/karafka/routing/topics.rb +8 -0
  222. data/lib/karafka/runner.rb +1 -0
  223. data/lib/karafka/serialization/json/deserializer.rb +1 -0
  224. data/lib/karafka/server.rb +58 -28
  225. data/lib/karafka/setup/attributes_map.rb +344 -0
  226. data/lib/karafka/setup/config.rb +48 -19
  227. data/lib/karafka/status.rb +35 -7
  228. data/lib/karafka/templates/karafka.rb.erb +14 -6
  229. data/lib/karafka/time_trackers/base.rb +1 -6
  230. data/lib/karafka/time_trackers/pause.rb +49 -19
  231. data/lib/karafka/time_trackers/poll.rb +7 -3
  232. data/lib/karafka/version.rb +1 -1
  233. data/lib/karafka.rb +56 -3
  234. data/renovate.json +6 -0
  235. data.tar.gz.sig +0 -0
  236. metadata +189 -61
  237. metadata.gz.sig +0 -0
  238. data/bin/wait_for_kafka +0 -20
  239. data/certs/mensfeld.pem +0 -25
  240. data/lib/karafka/active_job/routing/extensions.rb +0 -31
  241. data/lib/karafka/contracts/consumer_group_topic.rb +0 -42
  242. data/lib/karafka/instrumentation.rb +0 -21
  243. data/lib/karafka/pro/base_consumer.rb +0 -82
  244. data/lib/karafka/pro/contracts/consumer_group.rb +0 -34
  245. data/lib/karafka/pro/contracts/consumer_group_topic.rb +0 -33
  246. 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.0.0
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
- MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
14
- ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjEwODExMTQxNTEzWhcNMjIwODExMTQx
15
- NTEzWjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
16
- CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDV2jKH4Ti87GM6nyT6D+ESzTI0MZDj
17
- ak2/TEwnxvijMJyCCPKT/qIkbW4/f0VHM4rhPr1nW73sb5SZBVFCLlJcOSKOBdUY
18
- TMY+SIXN2EtUaZuhAOe8LxtxjHTgRHvHcqUQMBENXTISNzCo32LnUxweu66ia4Pd
19
- 1mNRhzOqNv9YiBZvtBf7IMQ+sYdOCjboq2dlsWmJiwiDpY9lQBTnWORnT3mQxU5x
20
- vPSwnLB854cHdCS8fQo4DjeJBRZHhEbcE5sqhEMB3RZA3EtFVEXOxlNxVTS3tncI
21
- qyNXiWDaxcipaens4ObSY1C2HTV7OWb7OMqSCIybeYTSfkaSdqmcl4S6zxXkjH1J
22
- tnjayAVzD+QVXGijsPLE2PFnJAh9iDET2cMsjabO1f6l1OQNyAtqpcyQcgfnyW0z
23
- g7tGxTYD+6wJHffM9d9txOUw6djkF6bDxyqB8lo4Z3IObCx18AZjI9XPS9QG7w6q
24
- LCWuMG2lkCcRgASqaVk9fEf9yMc2xxz5o3kCAwEAAaN3MHUwCQYDVR0TBAIwADAL
25
- BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFBqUFCKCOe5IuueUVqOB991jyCLLMB0GA1Ud
26
- EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
27
- c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBADD0/UuTTFgW+CGk2U0RDw2RBOca
28
- W2LTF/G7AOzuzD0Tc4voc7WXyrgKwJREv8rgBimLnNlgmFJLmtUCh2U/MgxvcilH
29
- yshYcbseNvjkrtYnLRlWZR4SSB6Zei5AlyGVQLPkvdsBpNegcG6w075YEwzX/38a
30
- 8V9B/Yri2OGELBz8ykl7BsXUgNoUPA/4pHF6YRLz+VirOaUIQ4JfY7xGj6fSOWWz
31
- /rQ/d77r6o1mfJYM/3BRVg73a3b7DmRnE5qjwmSaSQ7u802pJnLesmArch0xGCT/
32
- fMmRli1Qb+6qOTl9mzD6UDMAyFR4t6MStLm0mIEqM0nBO5nUdUWbC7l9qXEf8XBE
33
- 2DP28p3EqSuS+lKbAWKcqv7t0iRhhmaod+Yn9mcrLN1sa3q3KSQ9BCyxezCD4Mk2
34
- R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
35
- pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
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: 2022-08-05 00:00:00.000000000 Z
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.2
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.2
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.1
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.1
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: Framework used to simplify Apache Kafka based Ruby applications development
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
- - maciej@mensfeld.pl
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/wait_for_kafka
148
+ - bin/verify_license_integrity
149
+ - certs/cert_chain.pem
156
150
  - certs/karafka-pro.pem
157
- - certs/mensfeld.pem
158
- - config/errors.yml
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/active_job/routing/extensions.rb
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/listener.rb
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/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
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/routing/builder_extensions.rb
231
- - lib/karafka/pro/routing/topic_extensions.rb
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: 2.7.0
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.3.7
422
+ rubygems_version: 3.4.10
295
423
  signing_key:
296
424
  specification_version: 4
297
- summary: Efficient Kafka processing framework for Ruby and Rails
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