karafka 1.4.0.rc1

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 (102) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/.coditsu/ci.yml +3 -0
  5. data/.console_irbrc +11 -0
  6. data/.diffend.yml +3 -0
  7. data/.github/FUNDING.yml +3 -0
  8. data/.github/ISSUE_TEMPLATE/bug_report.md +50 -0
  9. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  10. data/.github/workflows/ci.yml +52 -0
  11. data/.gitignore +69 -0
  12. data/.rspec +1 -0
  13. data/.ruby-gemset +1 -0
  14. data/.ruby-version +1 -0
  15. data/CHANGELOG.md +566 -0
  16. data/CODE_OF_CONDUCT.md +46 -0
  17. data/CONTRIBUTING.md +41 -0
  18. data/Gemfile +14 -0
  19. data/Gemfile.lock +139 -0
  20. data/MIT-LICENCE +18 -0
  21. data/README.md +99 -0
  22. data/bin/karafka +19 -0
  23. data/certs/mensfeld.pem +25 -0
  24. data/config/errors.yml +39 -0
  25. data/docker-compose.yml +17 -0
  26. data/karafka.gemspec +43 -0
  27. data/lib/karafka.rb +72 -0
  28. data/lib/karafka/app.rb +53 -0
  29. data/lib/karafka/attributes_map.rb +62 -0
  30. data/lib/karafka/backends/inline.rb +16 -0
  31. data/lib/karafka/base_consumer.rb +57 -0
  32. data/lib/karafka/base_responder.rb +226 -0
  33. data/lib/karafka/cli.rb +54 -0
  34. data/lib/karafka/cli/base.rb +78 -0
  35. data/lib/karafka/cli/console.rb +31 -0
  36. data/lib/karafka/cli/flow.rb +48 -0
  37. data/lib/karafka/cli/info.rb +31 -0
  38. data/lib/karafka/cli/install.rb +66 -0
  39. data/lib/karafka/cli/server.rb +71 -0
  40. data/lib/karafka/code_reloader.rb +67 -0
  41. data/lib/karafka/connection/api_adapter.rb +161 -0
  42. data/lib/karafka/connection/batch_delegator.rb +55 -0
  43. data/lib/karafka/connection/builder.rb +18 -0
  44. data/lib/karafka/connection/client.rb +117 -0
  45. data/lib/karafka/connection/listener.rb +71 -0
  46. data/lib/karafka/connection/message_delegator.rb +36 -0
  47. data/lib/karafka/consumers/batch_metadata.rb +10 -0
  48. data/lib/karafka/consumers/callbacks.rb +71 -0
  49. data/lib/karafka/consumers/includer.rb +64 -0
  50. data/lib/karafka/consumers/responders.rb +24 -0
  51. data/lib/karafka/consumers/single_params.rb +15 -0
  52. data/lib/karafka/contracts.rb +10 -0
  53. data/lib/karafka/contracts/config.rb +21 -0
  54. data/lib/karafka/contracts/consumer_group.rb +206 -0
  55. data/lib/karafka/contracts/consumer_group_topic.rb +19 -0
  56. data/lib/karafka/contracts/responder_usage.rb +54 -0
  57. data/lib/karafka/contracts/server_cli_options.rb +31 -0
  58. data/lib/karafka/errors.rb +51 -0
  59. data/lib/karafka/fetcher.rb +42 -0
  60. data/lib/karafka/helpers/class_matcher.rb +88 -0
  61. data/lib/karafka/helpers/config_retriever.rb +46 -0
  62. data/lib/karafka/helpers/inflector.rb +26 -0
  63. data/lib/karafka/helpers/multi_delegator.rb +32 -0
  64. data/lib/karafka/instrumentation/logger.rb +58 -0
  65. data/lib/karafka/instrumentation/monitor.rb +70 -0
  66. data/lib/karafka/instrumentation/proctitle_listener.rb +36 -0
  67. data/lib/karafka/instrumentation/stdout_listener.rb +140 -0
  68. data/lib/karafka/params/batch_metadata.rb +26 -0
  69. data/lib/karafka/params/builders/batch_metadata.rb +30 -0
  70. data/lib/karafka/params/builders/params.rb +38 -0
  71. data/lib/karafka/params/builders/params_batch.rb +25 -0
  72. data/lib/karafka/params/metadata.rb +20 -0
  73. data/lib/karafka/params/params.rb +50 -0
  74. data/lib/karafka/params/params_batch.rb +60 -0
  75. data/lib/karafka/patches/ruby_kafka.rb +47 -0
  76. data/lib/karafka/persistence/client.rb +29 -0
  77. data/lib/karafka/persistence/consumers.rb +45 -0
  78. data/lib/karafka/persistence/topics.rb +48 -0
  79. data/lib/karafka/process.rb +60 -0
  80. data/lib/karafka/responders/builder.rb +36 -0
  81. data/lib/karafka/responders/topic.rb +55 -0
  82. data/lib/karafka/routing/builder.rb +89 -0
  83. data/lib/karafka/routing/consumer_group.rb +61 -0
  84. data/lib/karafka/routing/consumer_mapper.rb +34 -0
  85. data/lib/karafka/routing/proxy.rb +46 -0
  86. data/lib/karafka/routing/router.rb +29 -0
  87. data/lib/karafka/routing/topic.rb +62 -0
  88. data/lib/karafka/routing/topic_mapper.rb +53 -0
  89. data/lib/karafka/serialization/json/deserializer.rb +27 -0
  90. data/lib/karafka/serialization/json/serializer.rb +31 -0
  91. data/lib/karafka/server.rb +86 -0
  92. data/lib/karafka/setup/config.rb +223 -0
  93. data/lib/karafka/setup/configurators/water_drop.rb +36 -0
  94. data/lib/karafka/setup/dsl.rb +21 -0
  95. data/lib/karafka/status.rb +29 -0
  96. data/lib/karafka/templates/application_consumer.rb.erb +7 -0
  97. data/lib/karafka/templates/application_responder.rb.erb +11 -0
  98. data/lib/karafka/templates/karafka.rb.erb +92 -0
  99. data/lib/karafka/version.rb +7 -0
  100. data/log/.gitkeep +0 -0
  101. metadata +325 -0
  102. metadata.gz.sig +4 -0
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ module Setup
5
+ # Configurators are used to post setup some of the components of Karafka after the core
6
+ # framework is initialized
7
+ module Configurators
8
+ # Class responsible for setting up WaterDrop configuration
9
+ class WaterDrop
10
+ # Sets up a WaterDrop settings
11
+ # @param config [Karafka::Setup::Config] Config we can user to setup things
12
+ # @note This will also inject Karafka monitor as a default monitor into WaterDrop,
13
+ # so we have the same monitor within whole Karafka framework (same with logger)
14
+ def call(config)
15
+ ::WaterDrop.setup do |water_config|
16
+ water_config.deliver = true
17
+
18
+ config.to_h.reject { |k, _v| k == :kafka }.each do |k, v|
19
+ key_assignment = :"#{k}="
20
+ next unless water_config.respond_to?(key_assignment)
21
+
22
+ water_config.public_send(key_assignment, v)
23
+ end
24
+
25
+ config.kafka.to_h.each do |k, v|
26
+ key_assignment = :"#{k}="
27
+ next unless water_config.kafka.respond_to?(key_assignment)
28
+
29
+ water_config.kafka.public_send(key_assignment, v)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ module Setup
5
+ # Dsl for allowing to work with the configuration from the Karafka::App
6
+ # @note Despite providing methods, everything is still persisted and fetched
7
+ # from the Karafka::Setup::Config
8
+ module Dsl
9
+ # Sets up the whole configuration
10
+ # @param [Block] block configuration block
11
+ def setup(&block)
12
+ Setup::Config.setup(&block)
13
+ end
14
+
15
+ # @return [Karafka::Config] config instance
16
+ def config
17
+ Setup::Config.config
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Karafka
4
+ # App status monitor
5
+ class Status
6
+ # Available states and their transitions
7
+ STATES = {
8
+ initializing: :initialize!,
9
+ initialized: :initialized!,
10
+ running: :run!,
11
+ stopping: :stop!
12
+ }.freeze
13
+
14
+ private_constant :STATES
15
+
16
+ STATES.each do |state, transition|
17
+ define_method :"#{state}?" do
18
+ @status == state
19
+ end
20
+
21
+ define_method transition do
22
+ @status = state
23
+ # Trap context disallows to run certain things that we instrument
24
+ # so the state changes are executed from a separate thread
25
+ Thread.new { Karafka.monitor.instrument("app.#{state}") }.join
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Application consumer from which all Karafka consumers should inherit
4
+ # You can rename it if it would conflict with your current code base (in case you're integrating
5
+ # Karafka with other frameworks)
6
+ class ApplicationConsumer < Karafka::BaseConsumer
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Application responder from which all Karafka responders should inherit
4
+ # You can rename it if it would conflict with your current code base (in case you're integrating
5
+ # Karafka with other frameworks)
6
+ class ApplicationResponder < Karafka::BaseResponder
7
+ # This method needs to be implemented in each of the responders
8
+ # def respond(data)
9
+ # respond_to :topic, data.to_json
10
+ # end
11
+ end
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ <% if rails? -%>
4
+ ENV['RAILS_ENV'] ||= 'development'
5
+ ENV['KARAFKA_ENV'] = ENV['RAILS_ENV']
6
+ require ::File.expand_path('../config/environment', __FILE__)
7
+ Rails.application.eager_load!
8
+
9
+ # This lines will make Karafka print to stdout like puma or unicorn
10
+ if Rails.env.development?
11
+ Rails.logger.extend(
12
+ ActiveSupport::Logger.broadcast(
13
+ ActiveSupport::Logger.new($stdout)
14
+ )
15
+ )
16
+ end
17
+ <% else -%>
18
+ # This file is auto-generated during the install process.
19
+ # If by any chance you've wanted a setup for Rails app, either run the `karafka:install`
20
+ # command again or refer to the install templates available in the source codes
21
+
22
+ ENV['RACK_ENV'] ||= 'development'
23
+ ENV['KARAFKA_ENV'] ||= ENV['RACK_ENV']
24
+ Bundler.require(:default, ENV['KARAFKA_ENV'])
25
+
26
+ # Zeitwerk custom loader for loading the app components before the whole
27
+ # Karafka framework configuration
28
+ APP_LOADER = Zeitwerk::Loader.new
29
+ APP_LOADER.enable_reloading
30
+
31
+ %w[
32
+ lib
33
+ app/consumers
34
+ app/responders
35
+ app/workers
36
+ ].each(&APP_LOADER.method(:push_dir))
37
+
38
+ APP_LOADER.setup
39
+ APP_LOADER.eager_load
40
+ <% end -%>
41
+
42
+ class KarafkaApp < Karafka::App
43
+ setup do |config|
44
+ config.kafka.seed_brokers = %w[kafka://127.0.0.1:9092]
45
+ config.client_id = 'example_app'
46
+ <% if rails? -%>
47
+ config.logger = Rails.logger
48
+ <% end -%>
49
+ end
50
+
51
+ # Comment out this part if you are not using instrumentation and/or you are not
52
+ # interested in logging events for certain environments. Since instrumentation
53
+ # notifications add extra boilerplate, if you want to achieve max performance,
54
+ # listen to only what you really need for given environment.
55
+ Karafka.monitor.subscribe(WaterDrop::Instrumentation::StdoutListener.new)
56
+ Karafka.monitor.subscribe(Karafka::Instrumentation::StdoutListener.new)
57
+ Karafka.monitor.subscribe(Karafka::Instrumentation::ProctitleListener.new)
58
+
59
+ # Uncomment that in order to achieve code reload in development mode
60
+ # Be aware, that this might have some side-effects. Please refer to the wiki
61
+ # for more details on benefits and downsides of the code reload in the
62
+ # development mode
63
+ #
64
+ # Karafka.monitor.subscribe(
65
+ # Karafka::CodeReloader.new(
66
+ # <%= rails? ? '*Rails.application.reloaders' : 'APP_LOADER' %>
67
+ # )
68
+ # )
69
+
70
+ consumer_groups.draw do
71
+ # topic :example do
72
+ # consumer ExampleConsumer
73
+ # end
74
+
75
+ # consumer_group :bigger_group do
76
+ # topic :test do
77
+ # consumer TestConsumer
78
+ # end
79
+ #
80
+ # topic :test2 do
81
+ # consumer Test2Consumer
82
+ # end
83
+ # end
84
+ end
85
+ end
86
+
87
+ Karafka.monitor.subscribe('app.initialized') do
88
+ # Put here all the things you want to do after the Karafka framework
89
+ # initialization
90
+ end
91
+
92
+ KarafkaApp.boot!
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Main module namespace
4
+ module Karafka
5
+ # Current Karafka version
6
+ VERSION = '1.4.0.rc1'
7
+ end
File without changes
metadata ADDED
@@ -0,0 +1,325 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: karafka
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Maciej Mensfeld
8
+ - Pavlo Vavruk
9
+ - Adam Gwozdowski
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain:
13
+ - |
14
+ -----BEGIN CERTIFICATE-----
15
+ MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
16
+ ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjAwODExMDkxNTM3WhcNMjEwODExMDkx
17
+ NTM3WjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
18
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDCpXsCgmINb6lHBXXBdyrgsBPSxC4/
19
+ 2H+weJ6L9CruTiv2+2/ZkQGtnLcDgrD14rdLIHK7t0o3EKYlDT5GhD/XUVhI15JE
20
+ N7IqnPUgexe1fbZArwQ51afxz2AmPQN2BkB2oeQHXxnSWUGMhvcEZpfbxCCJH26w
21
+ hS0Ccsma8yxA6hSlGVhFVDuCr7c2L1di6cK2CtIDpfDaWqnVNJEwBYHIxrCoWK5g
22
+ sIGekVt/admS9gRhIMaIBg+Mshth5/DEyWO2QjteTodItlxfTctrfmiAl8X8T5JP
23
+ VXeLp5SSOJ5JXE80nShMJp3RFnGw5fqjX/ffjtISYh78/By4xF3a25HdWH9+qO2Z
24
+ tx0wSGc9/4gqNM0APQnjN/4YXrGZ4IeSjtE+OrrX07l0TiyikzSLFOkZCAp8oBJi
25
+ Fhlosz8xQDJf7mhNxOaZziqASzp/hJTU/tuDKl5+ql2icnMv5iV/i6SlmvU29QNg
26
+ LCV71pUv0pWzN+OZbHZKWepGhEQ3cG9MwvkCAwEAAaN3MHUwCQYDVR0TBAIwADAL
27
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFImGed2AXS070ohfRidiCEhXEUN+MB0GA1Ud
28
+ EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
29
+ c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBAKiHpwoENVrMi94V1zD4o8/6G3AU
30
+ gWz4udkPYHTZLUy3dLznc/sNjdkJFWT3E6NKYq7c60EpJ0m0vAEg5+F5pmNOsvD3
31
+ 2pXLj9kisEeYhR516HwXAvtngboUcb75skqvBCU++4Pu7BRAPjO1/ihLSBexbwSS
32
+ fF+J5OWNuyHHCQp+kGPLtXJe2yUYyvSWDj3I2//Vk0VhNOIlaCS1+5/P3ZJThOtm
33
+ zJUBI7h3HgovwRpcnmk2mXTmU4Zx/bCzX8EA6VY0khEvnmiq7S6eBF0H9qH8KyQ6
34
+ EkVLpvmUDFcf/uNaBQdazEMB5jYtwoA8gQlANETNGPi51KlkukhKgaIEDMkBDJOx
35
+ 65N7DzmkcyY0/GwjIVIxmRhcrCt1YeCUElmfFx0iida1/YRm6sB2AXqScc1+ECRi
36
+ 2DND//YJUikn1zwbz1kT70XmHd97B4Eytpln7K+M1u2g1pHVEPW4owD/ammXNpUy
37
+ nt70FcDD4yxJQ+0YNiHd0N8IcVBM1TMIVctMNQ==
38
+ -----END CERTIFICATE-----
39
+ date: 2020-08-25 00:00:00.000000000 Z
40
+ dependencies:
41
+ - !ruby/object:Gem::Dependency
42
+ name: dry-configurable
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.8'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-inflector
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dry-monitor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: dry-validation
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: envlogic
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.1'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: irb
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '11.3'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '11.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: ruby-kafka
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 1.0.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: thor
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0.20'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0.20'
167
+ - !ruby/object:Gem::Dependency
168
+ name: waterdrop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.4.0
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.4.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: zeitwerk
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '2.1'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '2.1'
195
+ description: Framework used to simplify Apache Kafka based Ruby applications development
196
+ email:
197
+ - maciej@mensfeld.pl
198
+ - pavlo.vavruk@gmail.com
199
+ - adam99g@gmail.com
200
+ executables:
201
+ - karafka
202
+ extensions: []
203
+ extra_rdoc_files: []
204
+ files:
205
+ - ".coditsu/ci.yml"
206
+ - ".console_irbrc"
207
+ - ".diffend.yml"
208
+ - ".github/FUNDING.yml"
209
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
210
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
211
+ - ".github/workflows/ci.yml"
212
+ - ".gitignore"
213
+ - ".rspec"
214
+ - ".ruby-gemset"
215
+ - ".ruby-version"
216
+ - CHANGELOG.md
217
+ - CODE_OF_CONDUCT.md
218
+ - CONTRIBUTING.md
219
+ - Gemfile
220
+ - Gemfile.lock
221
+ - MIT-LICENCE
222
+ - README.md
223
+ - bin/karafka
224
+ - certs/mensfeld.pem
225
+ - config/errors.yml
226
+ - docker-compose.yml
227
+ - karafka.gemspec
228
+ - lib/karafka.rb
229
+ - lib/karafka/app.rb
230
+ - lib/karafka/attributes_map.rb
231
+ - lib/karafka/backends/inline.rb
232
+ - lib/karafka/base_consumer.rb
233
+ - lib/karafka/base_responder.rb
234
+ - lib/karafka/cli.rb
235
+ - lib/karafka/cli/base.rb
236
+ - lib/karafka/cli/console.rb
237
+ - lib/karafka/cli/flow.rb
238
+ - lib/karafka/cli/info.rb
239
+ - lib/karafka/cli/install.rb
240
+ - lib/karafka/cli/server.rb
241
+ - lib/karafka/code_reloader.rb
242
+ - lib/karafka/connection/api_adapter.rb
243
+ - lib/karafka/connection/batch_delegator.rb
244
+ - lib/karafka/connection/builder.rb
245
+ - lib/karafka/connection/client.rb
246
+ - lib/karafka/connection/listener.rb
247
+ - lib/karafka/connection/message_delegator.rb
248
+ - lib/karafka/consumers/batch_metadata.rb
249
+ - lib/karafka/consumers/callbacks.rb
250
+ - lib/karafka/consumers/includer.rb
251
+ - lib/karafka/consumers/responders.rb
252
+ - lib/karafka/consumers/single_params.rb
253
+ - lib/karafka/contracts.rb
254
+ - lib/karafka/contracts/config.rb
255
+ - lib/karafka/contracts/consumer_group.rb
256
+ - lib/karafka/contracts/consumer_group_topic.rb
257
+ - lib/karafka/contracts/responder_usage.rb
258
+ - lib/karafka/contracts/server_cli_options.rb
259
+ - lib/karafka/errors.rb
260
+ - lib/karafka/fetcher.rb
261
+ - lib/karafka/helpers/class_matcher.rb
262
+ - lib/karafka/helpers/config_retriever.rb
263
+ - lib/karafka/helpers/inflector.rb
264
+ - lib/karafka/helpers/multi_delegator.rb
265
+ - lib/karafka/instrumentation/logger.rb
266
+ - lib/karafka/instrumentation/monitor.rb
267
+ - lib/karafka/instrumentation/proctitle_listener.rb
268
+ - lib/karafka/instrumentation/stdout_listener.rb
269
+ - lib/karafka/params/batch_metadata.rb
270
+ - lib/karafka/params/builders/batch_metadata.rb
271
+ - lib/karafka/params/builders/params.rb
272
+ - lib/karafka/params/builders/params_batch.rb
273
+ - lib/karafka/params/metadata.rb
274
+ - lib/karafka/params/params.rb
275
+ - lib/karafka/params/params_batch.rb
276
+ - lib/karafka/patches/ruby_kafka.rb
277
+ - lib/karafka/persistence/client.rb
278
+ - lib/karafka/persistence/consumers.rb
279
+ - lib/karafka/persistence/topics.rb
280
+ - lib/karafka/process.rb
281
+ - lib/karafka/responders/builder.rb
282
+ - lib/karafka/responders/topic.rb
283
+ - lib/karafka/routing/builder.rb
284
+ - lib/karafka/routing/consumer_group.rb
285
+ - lib/karafka/routing/consumer_mapper.rb
286
+ - lib/karafka/routing/proxy.rb
287
+ - lib/karafka/routing/router.rb
288
+ - lib/karafka/routing/topic.rb
289
+ - lib/karafka/routing/topic_mapper.rb
290
+ - lib/karafka/serialization/json/deserializer.rb
291
+ - lib/karafka/serialization/json/serializer.rb
292
+ - lib/karafka/server.rb
293
+ - lib/karafka/setup/config.rb
294
+ - lib/karafka/setup/configurators/water_drop.rb
295
+ - lib/karafka/setup/dsl.rb
296
+ - lib/karafka/status.rb
297
+ - lib/karafka/templates/application_consumer.rb.erb
298
+ - lib/karafka/templates/application_responder.rb.erb
299
+ - lib/karafka/templates/karafka.rb.erb
300
+ - lib/karafka/version.rb
301
+ - log/.gitkeep
302
+ homepage: https://github.com/karafka/karafka
303
+ licenses:
304
+ - MIT
305
+ metadata: {}
306
+ post_install_message:
307
+ rdoc_options: []
308
+ require_paths:
309
+ - lib
310
+ required_ruby_version: !ruby/object:Gem::Requirement
311
+ requirements:
312
+ - - ">="
313
+ - !ruby/object:Gem::Version
314
+ version: 2.5.0
315
+ required_rubygems_version: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - ">"
318
+ - !ruby/object:Gem::Version
319
+ version: 1.3.1
320
+ requirements: []
321
+ rubygems_version: 3.1.4
322
+ signing_key:
323
+ specification_version: 4
324
+ summary: Ruby based framework for working with Apache Kafka
325
+ test_files: []