karafka 2.0.0.alpha1 → 2.0.0.alpha4

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 (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +3 -1
  4. data/CHANGELOG.md +14 -1
  5. data/CONTRIBUTING.md +6 -6
  6. data/Gemfile.lock +24 -24
  7. data/LICENSE +3 -0
  8. data/bin/integrations +44 -8
  9. data/bin/karafka +4 -0
  10. data/bin/stress +1 -1
  11. data/config/errors.yml +1 -0
  12. data/docker-compose.yml +1 -0
  13. data/karafka.gemspec +1 -1
  14. data/lib/active_job/karafka.rb +16 -13
  15. data/lib/active_job/queue_adapters/karafka_adapter.rb +3 -6
  16. data/lib/karafka/active_job/consumer.rb +24 -0
  17. data/lib/karafka/active_job/dispatcher.rb +38 -0
  18. data/lib/karafka/active_job/job_extensions.rb +34 -0
  19. data/lib/karafka/active_job/job_options_contract.rb +15 -0
  20. data/lib/karafka/active_job/routing_extensions.rb +18 -0
  21. data/lib/karafka/app.rb +1 -0
  22. data/lib/karafka/cli/info.rb +3 -3
  23. data/lib/karafka/cli/install.rb +1 -0
  24. data/lib/karafka/cli/server.rb +2 -16
  25. data/lib/karafka/contracts/base.rb +23 -0
  26. data/lib/karafka/contracts/config.rb +21 -3
  27. data/lib/karafka/contracts/consumer_group.rb +1 -3
  28. data/lib/karafka/contracts/consumer_group_topic.rb +2 -3
  29. data/lib/karafka/contracts/server_cli_options.rb +1 -3
  30. data/lib/karafka/errors.rb +4 -0
  31. data/lib/karafka/instrumentation/monitor.rb +1 -0
  32. data/lib/karafka/instrumentation/stdout_listener.rb +3 -0
  33. data/lib/karafka/licenser.rb +20 -9
  34. data/lib/karafka/messages/batch_metadata.rb +2 -0
  35. data/lib/karafka/messages/builders/batch_metadata.rb +23 -1
  36. data/lib/karafka/pro/active_job/dispatcher.rb +58 -0
  37. data/lib/karafka/pro/active_job/job_options_contract.rb +27 -0
  38. data/lib/karafka/pro/loader.rb +29 -0
  39. data/lib/karafka/pro.rb +13 -0
  40. data/lib/karafka/processing/worker.rb +1 -1
  41. data/lib/karafka/railtie.rb +55 -19
  42. data/lib/karafka/routing/builder.rb +1 -11
  43. data/lib/karafka/routing/subscription_group.rb +5 -5
  44. data/lib/karafka/routing/subscription_groups_builder.rb +1 -0
  45. data/lib/karafka/routing/topic.rb +1 -0
  46. data/lib/karafka/setup/config.rb +25 -20
  47. data/lib/karafka/status.rb +1 -0
  48. data/lib/karafka/templates/karafka.rb.erb +1 -1
  49. data/lib/karafka/version.rb +1 -1
  50. data/lib/karafka.rb +7 -2
  51. data.tar.gz.sig +0 -0
  52. metadata +14 -7
  53. metadata.gz.sig +0 -0
  54. data/.github/FUNDING.yml +0 -3
  55. data/lib/active_job/consumer.rb +0 -22
  56. data/lib/active_job/routing_extensions.rb +0 -15
data/lib/karafka.rb CHANGED
@@ -65,6 +65,11 @@ module Karafka
65
65
  Pathname.new(File.expand_path('karafka', __dir__))
66
66
  end
67
67
 
68
+ # @return [Boolean] true if there is a valid pro token present
69
+ def pro?
70
+ App.config.license.token != false
71
+ end
72
+
68
73
  # @return [String] path to a default file that contains booting procedure etc
69
74
  # @note By default it is a file called 'karafka.rb' but it can be specified as you wish if you
70
75
  # have Karafka that is merged into a Sinatra/Rails app and karafka.rb is taken.
@@ -82,8 +87,8 @@ end
82
87
 
83
88
  loader = Zeitwerk::Loader.for_gem
84
89
  # Do not load Rails extensions by default, this will be handled by Railtie if they are needed
85
- loader.do_not_eager_load(Karafka.gem_root.join('lib/active_job'))
90
+ loader.ignore(Karafka.gem_root.join('lib/active_job'))
86
91
  # Do not load pro components, this will be handled by license manager
87
- loader.do_not_eager_load(Karafka.gem_root.join('lib/karafka/pro'))
92
+ loader.ignore(Karafka.gem_root.join('lib/karafka/pro'))
88
93
  loader.setup
89
94
  loader.eager_load
data.tar.gz.sig CHANGED
Binary file
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.alpha1
4
+ version: 2.0.0.alpha4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Mensfeld
@@ -34,7 +34,7 @@ cert_chain:
34
34
  R2P11bWoCtr70BsccVrN8jEhzwXngMyI2gVt750Y+dbTu1KgRqZKp/ECe7ZzPzXj
35
35
  pIy9vHxTANKYVyI4qj8OrFdEM5BQNu8oQpL0iQ==
36
36
  -----END CERTIFICATE-----
37
- date: 2022-01-30 00:00:00.000000000 Z
37
+ date: 2022-03-20 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: dry-configurable
@@ -112,7 +112,7 @@ dependencies:
112
112
  requirements:
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 2.1.0
115
+ version: 2.2.0
116
116
  - - "<"
117
117
  - !ruby/object:Gem::Version
118
118
  version: 3.0.0
@@ -122,7 +122,7 @@ dependencies:
122
122
  requirements:
123
123
  - - ">="
124
124
  - !ruby/object:Gem::Version
125
- version: 2.1.0
125
+ version: 2.2.0
126
126
  - - "<"
127
127
  - !ruby/object:Gem::Version
128
128
  version: 3.0.0
@@ -151,7 +151,6 @@ files:
151
151
  - ".coditsu/ci.yml"
152
152
  - ".console_irbrc"
153
153
  - ".diffend.yml"
154
- - ".github/FUNDING.yml"
155
154
  - ".github/ISSUE_TEMPLATE/bug_report.md"
156
155
  - ".github/ISSUE_TEMPLATE/feature_request.md"
157
156
  - ".github/workflows/ci.yml"
@@ -178,11 +177,14 @@ files:
178
177
  - config/errors.yml
179
178
  - docker-compose.yml
180
179
  - karafka.gemspec
181
- - lib/active_job/consumer.rb
182
180
  - lib/active_job/karafka.rb
183
181
  - lib/active_job/queue_adapters/karafka_adapter.rb
184
- - lib/active_job/routing_extensions.rb
185
182
  - lib/karafka.rb
183
+ - lib/karafka/active_job/consumer.rb
184
+ - lib/karafka/active_job/dispatcher.rb
185
+ - lib/karafka/active_job/job_extensions.rb
186
+ - lib/karafka/active_job/job_options_contract.rb
187
+ - lib/karafka/active_job/routing_extensions.rb
186
188
  - lib/karafka/app.rb
187
189
  - lib/karafka/base_consumer.rb
188
190
  - lib/karafka/cli.rb
@@ -197,6 +199,7 @@ files:
197
199
  - lib/karafka/connection/pauses_manager.rb
198
200
  - lib/karafka/connection/rebalance_manager.rb
199
201
  - lib/karafka/contracts.rb
202
+ - lib/karafka/contracts/base.rb
200
203
  - lib/karafka/contracts/config.rb
201
204
  - lib/karafka/contracts/consumer_group.rb
202
205
  - lib/karafka/contracts/consumer_group_topic.rb
@@ -221,6 +224,10 @@ files:
221
224
  - lib/karafka/messages/metadata.rb
222
225
  - lib/karafka/messages/seek.rb
223
226
  - lib/karafka/patches/rdkafka/consumer.rb
227
+ - lib/karafka/pro.rb
228
+ - lib/karafka/pro/active_job/dispatcher.rb
229
+ - lib/karafka/pro/active_job/job_options_contract.rb
230
+ - lib/karafka/pro/loader.rb
224
231
  - lib/karafka/process.rb
225
232
  - lib/karafka/processing/executor.rb
226
233
  - lib/karafka/processing/executors_buffer.rb
metadata.gz.sig CHANGED
Binary file
data/.github/FUNDING.yml DELETED
@@ -1,3 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- open_collective: karafka
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveJob
4
- # This is the consumer for ActiveJob that eats the messages enqueued with it one after another.
5
- # It marks the offset after each message, so we make sure, none of the jobs is executed twice
6
- class Consumer < Karafka::BaseConsumer
7
- # Executes the ActiveJob logic
8
- # @note ActiveJob does not support batches, so we just run one message after another
9
- def consume
10
- messages.each do |message|
11
- ActiveJob::Base.execute(
12
- # We technically speaking could set this as deserializer and reference it from the
13
- # message instead of using the `#raw_payload`. This is not done on purpose to simplify
14
- # the ActiveJob setup here
15
- ActiveSupport::JSON.decode(message.raw_payload)
16
- )
17
-
18
- mark_as_consumed(message)
19
- end
20
- end
21
- end
22
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveJob
4
- # Routing extensions for ActiveJob
5
- module RoutingExtensions
6
- # This method simplifies routes definition for ActiveJob topics / queues by auto-injecting the
7
- # consumer class
8
- # @param name [String, Symbol] name of the topic where ActiveJobs jobs should go
9
- def active_job_topic(name)
10
- topic(name) do
11
- consumer ActiveJob::Consumer
12
- end
13
- end
14
- end
15
- end