karafka 1.3.0 → 1.4.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.diffend.yml +3 -0
  4. data/.github/workflows/ci.yml +76 -0
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +112 -15
  7. data/CODE_OF_CONDUCT.md +1 -1
  8. data/Gemfile +2 -0
  9. data/Gemfile.lock +87 -98
  10. data/README.md +28 -31
  11. data/certs/mensfeld.pem +24 -23
  12. data/config/errors.yml +2 -0
  13. data/docker-compose.yml +17 -0
  14. data/karafka.gemspec +22 -14
  15. data/lib/karafka/assignment_strategies/round_robin.rb +13 -0
  16. data/lib/karafka/attributes_map.rb +3 -8
  17. data/lib/karafka/cli/base.rb +4 -4
  18. data/lib/karafka/cli/flow.rb +9 -6
  19. data/lib/karafka/cli/info.rb +1 -1
  20. data/lib/karafka/cli/install.rb +5 -2
  21. data/lib/karafka/cli/missingno.rb +19 -0
  22. data/lib/karafka/cli/server.rb +8 -8
  23. data/lib/karafka/cli.rb +9 -1
  24. data/lib/karafka/connection/api_adapter.rb +27 -24
  25. data/lib/karafka/connection/batch_delegator.rb +5 -1
  26. data/lib/karafka/connection/builder.rb +9 -2
  27. data/lib/karafka/connection/client.rb +9 -6
  28. data/lib/karafka/connection/listener.rb +2 -2
  29. data/lib/karafka/consumers/batch_metadata.rb +10 -0
  30. data/lib/karafka/consumers/includer.rb +5 -4
  31. data/lib/karafka/contracts/consumer_group.rb +10 -5
  32. data/lib/karafka/contracts/server_cli_options.rb +2 -0
  33. data/lib/karafka/contracts.rb +1 -1
  34. data/lib/karafka/helpers/class_matcher.rb +2 -2
  35. data/lib/karafka/instrumentation/logger.rb +6 -9
  36. data/lib/karafka/instrumentation/stdout_listener.rb +6 -4
  37. data/lib/karafka/params/batch_metadata.rb +26 -0
  38. data/lib/karafka/params/builders/batch_metadata.rb +30 -0
  39. data/lib/karafka/params/builders/params.rb +17 -15
  40. data/lib/karafka/params/builders/params_batch.rb +2 -2
  41. data/lib/karafka/params/metadata.rb +14 -29
  42. data/lib/karafka/params/params.rb +27 -41
  43. data/lib/karafka/params/params_batch.rb +15 -16
  44. data/lib/karafka/routing/builder.rb +1 -0
  45. data/lib/karafka/routing/consumer_group.rb +5 -3
  46. data/lib/karafka/serialization/json/deserializer.rb +2 -2
  47. data/lib/karafka/server.rb +4 -1
  48. data/lib/karafka/setup/config.rb +60 -52
  49. data/lib/karafka/templates/karafka.rb.erb +1 -1
  50. data/lib/karafka/version.rb +1 -1
  51. data/lib/karafka.rb +3 -1
  52. data.tar.gz.sig +0 -0
  53. metadata +75 -93
  54. metadata.gz.sig +0 -0
  55. data/.github/FUNDING.yml +0 -3
  56. data/.travis.yml +0 -36
  57. data/lib/karafka/consumers/metadata.rb +0 -10
  58. data/lib/karafka/params/builders/metadata.rb +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffe10d1ca48b0b218191231ec6969f3a767f5a1a4010dca0ef00fa44c2eaab67
4
- data.tar.gz: 27d1b52ba3782b562176b7a6de73563bdd48c250bc0576a1821c55bfcec07bff
3
+ metadata.gz: 7dd06a7ace623ae63695899e2cff1293482390ccbaeabcf7b1cc4b4aa6ec6a9e
4
+ data.tar.gz: 60e7c986a94c9552c1adc754b6bdb02f5e5cb5012881a15333fa8eff854485a8
5
5
  SHA512:
6
- metadata.gz: 85bdedfe0791c7d17abbc54ed49df83e2c9cbfb048124107d403559e72b2884909bcc5974c98a738744f80184315b2ee31cc8bd1048cc5a10230e6b6f0184e3d
7
- data.tar.gz: 382074bee041ed27776571816a982fbd7f0af6b6f9cfa8fa393113acf1c2d4cbfb0a7573d2bcd16f2662667d1b8175546e281deb5a7b66ce30b5d9c4c19d005d
6
+ metadata.gz: cc34ba15cd7f8f138202fd0a9b53c3f63fcde13dd353e8da810a2b1f5e153c87335b0f4d26e6dccca4c484ddc12ef59d8331315130772bd5f05ef39a34f1a7c7
7
+ data.tar.gz: 9ef7cfce8c382091072e1c1df4cfece7bd5220cc3b8c74f82f4b1166bda756c354b4632df66ef95c912d3f13c2264914d96359fb72d4663592f98cd4b313f269
checksums.yaml.gz.sig CHANGED
Binary file
data/.diffend.yml ADDED
@@ -0,0 +1,3 @@
1
+ project_id: 'de9b9933-7610-4cc4-b69b-f7e3e3c5e797'
2
+ shareable_id: '68a8c626-b605-40ad-ac45-e3961ad7c57d'
3
+ shareable_key: 'a3ec2dac-fba2-4b6c-b181-49e927b15057'
@@ -0,0 +1,76 @@
1
+ name: ci
2
+
3
+ concurrency: ci-${{ github.ref }}
4
+
5
+ on:
6
+ pull_request:
7
+ push:
8
+ schedule:
9
+ - cron: '0 1 * * *'
10
+
11
+ jobs:
12
+ specs:
13
+ runs-on: ubuntu-latest
14
+ needs: diffend
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ ruby:
19
+ - '3.1'
20
+ - '3.0'
21
+ - '2.7'
22
+ include:
23
+ - ruby: '3.1'
24
+ coverage: 'true'
25
+ steps:
26
+ - uses: actions/checkout@v2
27
+ - name: Install package dependencies
28
+ run: "[ -e $APT_DEPS ] || sudo apt-get install -y --no-install-recommends $APT_DEPS"
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{matrix.ruby}}
33
+ - name: Install latest bundler
34
+ run: |
35
+ gem install bundler --no-document
36
+ bundle config set without 'tools benchmarks docs'
37
+ - name: Bundle install
38
+ run: |
39
+ bundle config set without development
40
+ bundle install --jobs 4 --retry 3
41
+ - name: Run Kafka with docker-compose
42
+ run: docker-compose up -d
43
+ - name: Run all tests
44
+ env:
45
+ GITHUB_COVERAGE: ${{matrix.coverage}}
46
+ run: bundle exec rspec
47
+
48
+ diffend:
49
+ runs-on: ubuntu-latest
50
+ strategy:
51
+ fail-fast: false
52
+ steps:
53
+ - uses: actions/checkout@v2
54
+ with:
55
+ fetch-depth: 0
56
+ - name: Set up Ruby
57
+ uses: ruby/setup-ruby@v1
58
+ with:
59
+ ruby-version: 3.1
60
+ - name: Install latest bundler
61
+ run: gem install bundler --no-document
62
+ - name: Install Diffend plugin
63
+ run: bundle plugin install diffend
64
+ - name: Bundle Secure
65
+ run: bundle secure
66
+
67
+ coditsu:
68
+ runs-on: ubuntu-latest
69
+ strategy:
70
+ fail-fast: false
71
+ steps:
72
+ - uses: actions/checkout@v2
73
+ with:
74
+ fetch-depth: 0
75
+ - name: Run Coditsu
76
+ run: \curl -sSL https://api.coditsu.io/run/ci | bash
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 3.1.2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,102 @@
1
1
  # Karafka framework changelog
2
2
 
3
+ ## 1.4.14 (2022-10-14)
4
+ - Fix `concurrent-ruby` missing as a dependency (Azdaroth)
5
+ - Warn about upcoming end of 1.4 support.
6
+
7
+ ## 1.4.13 (2022-02-19)
8
+ - Drop support for ruby 2.6
9
+ - Add mfa requirement
10
+
11
+ ## 1.4.12 (2022-01-13)
12
+ - Ruby 3.1 support
13
+ - `irb` dependency removal (vbyno)
14
+
15
+ ## 1.4.11 (2021-12-04)
16
+ - Source code metadata url added to the gemspec
17
+ - Gem bump
18
+
19
+ ## 1.4.10 (2021-10-30)
20
+ - update gems requirements in the gemspec (nijikon)
21
+
22
+ ## 1.4.9 (2021-09-29)
23
+ - fix `dry-configurable` deprecation warnings for default value as positional argument
24
+
25
+ ## 1.4.8 (2021-09-08)
26
+ - Allow 'rails' in Gemfile to enable rails-aware generator (rewritten)
27
+
28
+ ## 1.4.7 (2021-09-04)
29
+ - Update ruby-kafka to `1.4.0`
30
+ - Support for `resolve_seed_brokers` option (with Azdaroth)
31
+ - Set minimum `ruby-kafka` requirement to `1.3.0`
32
+
33
+ ## 1.4.6 (2021-08-05)
34
+ - #700 Fix Ruby 3 compatibility issues in Connection::Client#pause (MmKolodziej)
35
+
36
+ ## 1.4.5 (2021-06-16)
37
+ - Fixup logger checks for non-writeable logfile (ojab)
38
+ - #689 - Update the stdout initialization message for framework initialization
39
+
40
+ ## 1.4.4 (2021-04-19)
41
+ - Remove Ruby 2.5 support and update minimum Ruby requirement to 2.6
42
+ - Remove rake dependency
43
+
44
+ ## 1.4.3 (2021-03-24)
45
+ - Fixes for Ruby 3.0 compatibility
46
+
47
+ ## 1.4.2 (2021-02-16)
48
+ - Rescue Errno::EROFS in ensure_dir_exists (unasuke)
49
+
50
+ ## 1.4.1 (2020-12-04)
51
+ - Return non-zero exit code when printing usage
52
+ - Add support for :assignment_strategy for consumers
53
+
54
+ ## 1.4.0 (2020-09-05)
55
+ - Rename `Karafka::Params::Metadata` to `Karafka::Params::BatchMetadata`
56
+ - Rename consumer `#metadata` to `#batch_metadata`
57
+ - Separate metadata (including Karafka native metadata) from the root of params (backwards compatibility preserved thanks to rabotyaga)
58
+ - Remove metadata hash dependency
59
+ - Remove params dependency on a hash in favour of PORO
60
+ - Remove batch metadata dependency on a hash
61
+ - Remove MultiJson in favour of JSON in the default deserializer
62
+ - allow accessing all the metadata without accessing the payload
63
+ - freeze params and underlying elements except for the mutable payload
64
+ - provide access to raw payload after serialization
65
+ - fixes a bug where a non-deserializable (error) params would be marked as deserialized after first unsuccessful deserialization attempt
66
+ - fixes bug where karafka would mutate internal ruby-kafka state
67
+ - fixes bug where topic name in metadata would not be mapped using topic mappers
68
+ - simplifies the params and params batch API, before `#payload` usage, it won't be deserialized
69
+ - removes the `#[]` API from params to prevent from accessing raw data in a different way than #raw_payload
70
+ - makes the params batch operations consistent as params payload is deserialized only when accessed explicitly
71
+
72
+ ## 1.3.7 (2020-08-11)
73
+ - #599 - Allow metadata access without deserialization attempt (rabotyaga)
74
+ - Sync with ruby-kafka `1.2.0` api
75
+
76
+ ## 1.3.6 (2020-04-24)
77
+ - #583 - Use Karafka.logger for CLI messages (prikha)
78
+ - #582 - Cannot only define seed brokers in consumer groups
79
+
80
+ ## 1.3.5 (2020-04-02)
81
+ - #578 - ThreadError: can't be called from trap context patch
82
+
83
+ ## 1.3.4 (2020-02-17)
84
+ - `dry-configurable` upgrade (solnic)
85
+ - Remove temporary `thor` patches that are no longer needed
86
+
87
+ ## 1.3.3 (2019-12-23)
88
+ - Require `delegate` to fix missing dependency in `ruby-kafka`
89
+
90
+ ## 1.3.2 (2019-12-23)
91
+ - #561 - Allow `thor` 1.0.x usage in Karafka
92
+ - #567 - Ruby 2.7.0 support + unfreeze of a frozen string fix
93
+
94
+ ## 1.3.1 (2019-11-11)
95
+ - #545 - Makes sure the log directory exists when is possible (robertomiranda)
96
+ - Ruby 2.6.5 support
97
+ - #551 - add support for DSA keys
98
+ - #549 - Missing directories after `karafka install` (nijikon)
99
+
3
100
  ## 1.3.0 (2019-09-09)
4
101
  - Drop support for Ruby 2.4
5
102
  - YARD docs tags cleanup
@@ -58,6 +155,7 @@
58
155
  - #508 - Reset the consumers instances upon reconnecting to a cluster
59
156
  - [#530](https://github.com/karafka/karafka/pull/530) - expose ruby and ruby-kafka version
60
157
  - [534](https://github.com/karafka/karafka/pull/534) - Allow to use headers in the deserializer object
158
+ - [#319](https://github.com/karafka/karafka/pull/328) - Support for exponential backoff in pause
61
159
 
62
160
  ## 1.2.11
63
161
  - [#470](https://github.com/karafka/karafka/issues/470) Karafka not working with dry-configurable 0.8
@@ -92,11 +190,10 @@
92
190
  ## 1.2.3
93
191
  - #313 - support PLAINTEXT and SSL for scheme
94
192
  - #288 - drop activesupport callbacks in favor of notifications
95
- - #320 - Pausing indefinetely with nil pause timeout doesn't work
193
+ - #320 - Pausing indefinitely with nil pause timeout doesn't work
96
194
  - #318 - Partition pausing doesn't work with custom topic mappers
97
195
  - Rename ConfigAdapter to ApiAdapter to better reflect what it does
98
196
  - #317 - Manual offset committing doesn't work with custom topic mappers
99
- - #319 - Support for exponential backoff in pause
100
197
 
101
198
  ## 1.2.2
102
199
  - #312 - Broken for ActiveSupport 5.2.0
@@ -221,7 +318,7 @@
221
318
  - Switch to multi json so everyone can use their favourite JSON parser
222
319
  - Added jruby support in general and in Travis
223
320
  - #196 - Topic mapper does not map topics when subscribing thanks to @webandtech
224
- - #96 - Karafka server - possiblity to run it only for a certain topics
321
+ - #96 - Karafka server - possibility to run it only for a certain topics
225
322
  - ~~karafka worker cli option is removed (please use sidekiq directly)~~ - restored, bad idea
226
323
  - (optional) pausing upon processing failures ```pause_timeout```
227
324
  - Karafka console main process no longer intercepts irb errors
@@ -229,7 +326,7 @@
229
326
  - #204 - Long running controllers
230
327
  - Better internal API to handle multiple usage cases using ```Karafka::Controllers::Includer```
231
328
  - #207 - Rename before_enqueued to after_received
232
- - #147 - Deattach Karafka from Sidekiq by extracting Sidekiq backend
329
+ - #147 - De-attach Karafka from Sidekiq by extracting Sidekiq backend
233
330
 
234
331
  ### New features and improvements
235
332
 
@@ -314,7 +411,7 @@
314
411
  - Waterdrop 0.3.2.1 with kafka.hosts instead of kafka_hosts
315
412
  - #105 - Karafka::Monitor#caller_label not working with inherited monitors
316
413
  - #99 - Standalone mode (without Sidekiq)
317
- - #97 - Buffer responders single topics before send (prevalidation)
414
+ - #97 - Buffer responders single topics before send (pre-validation)
318
415
  - Better control over consumer thanks to additional config options
319
416
  - #111 - Dynamic worker assignment based on the income params
320
417
  - Long shutdown time fix
@@ -322,7 +419,7 @@
322
419
  ## 0.5.0
323
420
  - Removed Zookeeper totally as dependency
324
421
  - Better group and partition rebalancing
325
- - Automatic thread management (no need for tunning) - each topic is a separate actor/thread
422
+ - Automatic thread management (no need for tuning) - each topic is a separate actor/thread
326
423
  - Moved from Poseidon into Ruby-Kafka
327
424
  - No more max_concurrency setting
328
425
  - After you define your App class and routes (and everything else) you need to add execute App.boot!
@@ -338,14 +435,14 @@
338
435
  - Ruby 2.2.* support dropped
339
436
  - Using App name as a Kafka client_id
340
437
  - Automatic Capistrano integration
341
- - Responders support for handling better responses pipelining and better responses flow description and design (see README for more details)
438
+ - Responders support for handling better responses pipe-lining and better responses flow description and design (see README for more details)
342
439
  - Gem bump
343
440
  - Readme updates
344
441
  - karafka flow CLI command for printing the application flow
345
- - Some internal refactorings
442
+ - Some internal refactoring
346
443
 
347
444
  ## 0.4.2
348
- - #87 - Reconsume mode with crone for better Rails/Rack integration
445
+ - #87 - Re-consume mode with crone for better Rails/Rack integration
349
446
  - Moved Karafka server related stuff into separate Karafka::Server class
350
447
  - Renamed Karafka::Runner into Karafka::Fetcher
351
448
  - Gem bump
@@ -357,7 +454,7 @@
357
454
 
358
455
  ## 0.4.1
359
456
  - Explicit throw(:abort) required to halt before_enqueue (like in Rails 5)
360
- - #61 - Autodiscover Kafka brokers based on Zookeeper data
457
+ - #61 - autodiscovery of Kafka brokers based on Zookeeper data
361
458
  - #63 - Graceful shutdown with current offset state during data processing
362
459
  - #65 - Example of NewRelic monitor is outdated
363
460
  - #71 - Setup should be executed after user code is loaded
@@ -413,7 +510,7 @@
413
510
  - Added Karafka::Monitoring that allows to add custom logging and monitoring with external libraries and systems
414
511
  - Moved logging functionality into Karafka::Monitoring default monitoring
415
512
  - Added possibility to provide own monitoring as long as in responds to #notice and #notice_error
416
- - Standarized logging format for all logs
513
+ - Standardized logging format for all logs
417
514
 
418
515
  ## 0.3.0
419
516
  - Switched from custom ParserError for each parser to general catching of Karafka::Errors::ParseError and its descendants
@@ -430,7 +527,7 @@
430
527
 
431
528
  ## 0.1.19
432
529
  - Internal call - schedule naming change
433
- - Enqueue to perform_async naming in controller to follow Sidekiqs naming convention
530
+ - Enqueue to perform_async naming in controller to follow Sidekiq naming convention
434
531
  - Gem bump
435
532
 
436
533
  ## 0.1.18
@@ -441,7 +538,7 @@
441
538
  - Changed Karafka::Connection::Cluster tp Karafka::Connection::ActorCluster to distinguish between a single thread actor cluster for multiple topic connection and a future feature that will allow process clusterization.
442
539
  - Add an ability to use user-defined parsers for a messages
443
540
  - Lazy load params for before callbacks
444
- - Automatic loading/initializng all workers classes during startup (so Sidekiq won't fail with unknown workers exception)
541
+ - Automatic loading/initializing all workers classes during startup (so Sidekiq won't fail with unknown workers exception)
445
542
  - Params are now private to controller
446
543
  - Added bootstrap method to app.rb
447
544
 
@@ -482,7 +579,7 @@
482
579
  - Added worker logger
483
580
 
484
581
  ## 0.1.8
485
- - Droped local env suppot in favour of [Envlogic](https://github.com/karafka/envlogic) - no changes in API
582
+ - Dropped local env support in favour of [Envlogic](https://github.com/karafka/envlogic) - no changes in API
486
583
 
487
584
  ## 0.1.7
488
585
  - Karafka option for Redis hosts (not localhost only)
@@ -512,7 +609,7 @@
512
609
 
513
610
  ## 0.1.1
514
611
  - README updates
515
- - Raketasks updates
612
+ - Rake tasks updates
516
613
  - Rake installation task
517
614
  - Changelog file added
518
615
 
data/CODE_OF_CONDUCT.md CHANGED
@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
34
34
 
35
35
  ## Enforcement
36
36
 
37
- Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at maciej@coditsu.io. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at maciej@mensfeld.pl. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38
38
 
39
39
  Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40
40
 
data/Gemfile CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
+ plugin 'diffend'
6
+
5
7
  gemspec
6
8
 
7
9
  group :test do
data/Gemfile.lock CHANGED
@@ -1,130 +1,119 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- karafka (1.3.0)
5
- dry-configurable (~> 0.8)
6
- dry-inflector (~> 0.1)
7
- dry-monitor (~> 0.3)
8
- dry-validation (~> 1.2)
4
+ karafka (1.4.14)
5
+ concurrent-ruby
6
+ dry-configurable (~> 0.16)
7
+ dry-inflector (~> 0.2)
8
+ dry-monitor (~> 0.5)
9
+ dry-validation (~> 1.7)
9
10
  envlogic (~> 1.1)
10
- irb (~> 1.0)
11
- multi_json (>= 1.12)
12
- rake (>= 11.3)
13
- ruby-kafka (>= 0.7.8)
14
- thor (~> 0.20)
15
- waterdrop (~> 1.3.0)
16
- zeitwerk (~> 2.1)
11
+ ruby-kafka (>= 1.3.0)
12
+ thor (>= 1.1)
13
+ waterdrop (~> 1.4)
14
+ zeitwerk (~> 2.6)
17
15
 
18
16
  GEM
19
17
  remote: https://rubygems.org/
20
18
  specs:
21
- activesupport (6.0.0)
19
+ activesupport (7.0.3)
22
20
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
- i18n (>= 0.7, < 2)
24
- minitest (~> 5.1)
25
- tzinfo (~> 1.1)
26
- zeitwerk (~> 2.1, >= 2.1.8)
27
- byebug (11.0.1)
28
- concurrent-ruby (1.1.5)
29
- delivery_boy (0.2.8)
30
- king_konf (~> 0.3)
31
- ruby-kafka (~> 0.7.8)
32
- diff-lcs (1.3)
33
- digest-crc (0.4.1)
34
- docile (1.3.2)
35
- dry-configurable (0.8.3)
36
- concurrent-ruby (~> 1.0)
37
- dry-core (~> 0.4, >= 0.4.7)
38
- dry-container (0.7.2)
21
+ i18n (>= 1.6, < 2)
22
+ minitest (>= 5.1)
23
+ tzinfo (~> 2.0)
24
+ byebug (11.1.3)
25
+ concurrent-ruby (1.1.10)
26
+ delivery_boy (1.1.0)
27
+ king_konf (~> 1.0)
28
+ ruby-kafka (~> 1.0)
29
+ diff-lcs (1.5.0)
30
+ digest-crc (0.6.4)
31
+ rake (>= 12.0.0, < 14.0.0)
32
+ docile (1.4.0)
33
+ dry-configurable (0.16.1)
34
+ dry-core (~> 0.6)
35
+ zeitwerk (~> 2.6)
36
+ dry-container (0.11.0)
39
37
  concurrent-ruby (~> 1.0)
40
- dry-configurable (~> 0.1, >= 0.1.3)
41
- dry-core (0.4.9)
38
+ dry-core (0.8.1)
42
39
  concurrent-ruby (~> 1.0)
43
- dry-equalizer (0.2.2)
44
- dry-events (0.2.0)
40
+ dry-events (0.3.0)
45
41
  concurrent-ruby (~> 1.0)
46
- dry-core (~> 0.4)
47
- dry-equalizer (~> 0.2)
48
- dry-inflector (0.1.2)
49
- dry-initializer (3.0.1)
50
- dry-logic (1.0.3)
42
+ dry-core (~> 0.5, >= 0.5)
43
+ dry-inflector (0.3.0)
44
+ dry-initializer (3.1.1)
45
+ dry-logic (1.2.0)
51
46
  concurrent-ruby (~> 1.0)
52
- dry-core (~> 0.2)
53
- dry-equalizer (~> 0.2)
54
- dry-monitor (0.3.1)
55
- dry-configurable (~> 0.5)
56
- dry-core (~> 0.4)
57
- dry-equalizer (~> 0.2)
58
- dry-events (~> 0.1)
59
- dry-schema (1.3.3)
47
+ dry-core (~> 0.5, >= 0.5)
48
+ dry-monitor (0.6.3)
49
+ dry-configurable (~> 0.13, >= 0.13.0)
50
+ dry-core (~> 0.5, >= 0.5)
51
+ dry-events (~> 0.2)
52
+ zeitwerk (~> 2.5)
53
+ dry-schema (1.10.6)
60
54
  concurrent-ruby (~> 1.0)
61
- dry-configurable (~> 0.8, >= 0.8.3)
62
- dry-core (~> 0.4)
63
- dry-equalizer (~> 0.2)
55
+ dry-configurable (~> 0.13, >= 0.13.0)
56
+ dry-core (~> 0.5, >= 0.5)
64
57
  dry-initializer (~> 3.0)
65
- dry-logic (~> 1.0)
66
- dry-types (~> 1.0)
67
- dry-types (1.1.1)
58
+ dry-logic (~> 1.2)
59
+ dry-types (~> 1.5)
60
+ dry-types (1.5.1)
68
61
  concurrent-ruby (~> 1.0)
69
62
  dry-container (~> 0.3)
70
- dry-core (~> 0.4, >= 0.4.4)
71
- dry-equalizer (~> 0.2, >= 0.2.2)
63
+ dry-core (~> 0.5, >= 0.5)
72
64
  dry-inflector (~> 0.1, >= 0.1.2)
73
65
  dry-logic (~> 1.0, >= 1.0.2)
74
- dry-validation (1.3.1)
66
+ dry-validation (1.8.1)
75
67
  concurrent-ruby (~> 1.0)
76
68
  dry-container (~> 0.7, >= 0.7.1)
77
- dry-core (~> 0.4)
78
- dry-equalizer (~> 0.2)
69
+ dry-core (~> 0.5, >= 0.5)
79
70
  dry-initializer (~> 3.0)
80
- dry-schema (~> 1.0, >= 1.3.1)
81
- envlogic (1.1.0)
71
+ dry-schema (~> 1.8, >= 1.8.0)
72
+ envlogic (1.1.5)
82
73
  dry-inflector (~> 0.1)
83
- factory_bot (5.0.2)
84
- activesupport (>= 4.2.0)
85
- i18n (1.6.0)
74
+ factory_bot (6.2.1)
75
+ activesupport (>= 5.0.0)
76
+ i18n (1.10.0)
86
77
  concurrent-ruby (~> 1.0)
87
- irb (1.0.0)
88
- json (2.2.0)
89
- king_konf (0.3.7)
90
- minitest (5.11.3)
91
- multi_json (1.13.1)
92
- rake (12.3.3)
93
- rspec (3.8.0)
94
- rspec-core (~> 3.8.0)
95
- rspec-expectations (~> 3.8.0)
96
- rspec-mocks (~> 3.8.0)
97
- rspec-core (3.8.2)
98
- rspec-support (~> 3.8.0)
99
- rspec-expectations (3.8.4)
78
+ king_konf (1.0.1)
79
+ minitest (5.15.0)
80
+ rake (13.0.6)
81
+ rspec (3.11.0)
82
+ rspec-core (~> 3.11.0)
83
+ rspec-expectations (~> 3.11.0)
84
+ rspec-mocks (~> 3.11.0)
85
+ rspec-core (3.11.0)
86
+ rspec-support (~> 3.11.0)
87
+ rspec-expectations (3.11.0)
100
88
  diff-lcs (>= 1.2.0, < 2.0)
101
- rspec-support (~> 3.8.0)
102
- rspec-mocks (3.8.1)
89
+ rspec-support (~> 3.11.0)
90
+ rspec-mocks (3.11.1)
103
91
  diff-lcs (>= 1.2.0, < 2.0)
104
- rspec-support (~> 3.8.0)
105
- rspec-support (3.8.2)
106
- ruby-kafka (0.7.10)
92
+ rspec-support (~> 3.11.0)
93
+ rspec-support (3.11.0)
94
+ ruby-kafka (1.5.0)
107
95
  digest-crc
108
- simplecov (0.17.0)
96
+ simplecov (0.21.2)
109
97
  docile (~> 1.1)
110
- json (>= 1.8, < 3)
111
- simplecov-html (~> 0.10.0)
112
- simplecov-html (0.10.2)
113
- thor (0.20.3)
114
- thread_safe (0.3.6)
115
- tzinfo (1.2.5)
116
- thread_safe (~> 0.1)
117
- waterdrop (1.3.0)
118
- delivery_boy (~> 0.2)
119
- dry-configurable (~> 0.8)
120
- dry-monitor (~> 0.3)
121
- dry-validation (~> 1.2)
122
- ruby-kafka (>= 0.7.8)
123
- zeitwerk (~> 2.1)
124
- zeitwerk (2.1.10)
98
+ simplecov-html (~> 0.11)
99
+ simplecov_json_formatter (~> 0.1)
100
+ simplecov-html (0.12.3)
101
+ simplecov_json_formatter (0.1.4)
102
+ thor (1.2.1)
103
+ tzinfo (2.0.4)
104
+ concurrent-ruby (~> 1.0)
105
+ waterdrop (1.4.4)
106
+ delivery_boy (>= 0.2, < 2.x)
107
+ dry-configurable (~> 0.13)
108
+ dry-monitor (~> 0.5)
109
+ dry-validation (~> 1.7)
110
+ ruby-kafka (>= 1.3.0)
111
+ zeitwerk (~> 2.4)
112
+ zeitwerk (2.6.1)
125
113
 
126
114
  PLATFORMS
127
- ruby
115
+ x86_64-darwin-18
116
+ x86_64-linux
128
117
 
129
118
  DEPENDENCIES
130
119
  byebug
@@ -134,4 +123,4 @@ DEPENDENCIES
134
123
  simplecov
135
124
 
136
125
  BUNDLED WITH
137
- 2.0.2
126
+ 2.3.11
data/README.md CHANGED
@@ -1,17 +1,33 @@
1
1
  ![karafka logo](https://raw.githubusercontent.com/karafka/misc/master/logo/karafka_logotype_transparent2.png)
2
2
 
3
- [![Build Status](https://travis-ci.org/karafka/karafka.svg?branch=master)](https://travis-ci.org/karafka/karafka)
3
+ [![Build Status](https://github.com/karafka/karafka/actions/workflows/ci.yml/badge.svg)](https://github.com/karafka/karafka/actions/workflows/ci.yml)
4
+ [![Gem Version](https://badge.fury.io/rb/karafka.svg)](http://badge.fury.io/rb/karafka)
5
+ [![Join the chat at https://slack.karafka.io](https://raw.githubusercontent.com/karafka/misc/master/slack.svg)](https://slack.karafka.io)
4
6
 
5
- ## New release in progress!
6
-
7
- **Note**: Documentation presented here refers to Karafka `1.3.0`.
8
-
9
- If you are looking for the documentation for Karafka `1.2.*`, it can be found [here](https://github.com/karafka/wiki/tree/1.2).
7
+ **Note**: We're finishing the new Karafka `2.0` but for now, please use `1.4`. All the documentation presented here refers to `1.4`
10
8
 
11
9
  ## About Karafka
12
10
 
13
11
  Framework used to simplify Apache Kafka based Ruby applications development.
14
12
 
13
+ ```ruby
14
+ # Define what topics you want to consume with which consumers
15
+ Karafka::App.consumer_groups.draw do
16
+ topic 'system_events' do
17
+ consumer EventsConsumer
18
+ end
19
+ end
20
+
21
+ # And create your consumers, within which your messages will be processed
22
+ class EventsConsumer < ApplicationConsumer
23
+ # Example that utilizes ActiveRecord#insert_all and Karafka batch processing
24
+ def consume
25
+ # Store all of the incoming Kafka events locally in an efficient way
26
+ Event.insert_all params_batch.payloads
27
+ end
28
+ end
29
+ ```
30
+
15
31
  Karafka allows you to capture everything that happens in your systems in large scale, providing you with a seamless and stable core for consuming and processing this data, without having to focus on things that are not your business domain.
16
32
 
17
33
  Karafka not only handles incoming messages but also provides tools for building complex data-flow applications that receive and send messages.
@@ -37,9 +53,9 @@ Karafka based applications can be easily deployed to any type of infrastructure,
37
53
 
38
54
  ## Support
39
55
 
40
- Karafka has a [Wiki pages](https://github.com/karafka/karafka/wiki) for almost everything and a pretty decent [FAQ](https://github.com/karafka/karafka/wiki/FAQ). It covers the whole installation, setup, and deployment along with other useful details on how to run Karafka.
56
+ Karafka has [Wiki pages](https://github.com/karafka/karafka/wiki) for almost everything and a pretty decent [FAQ](https://github.com/karafka/karafka/wiki/FAQ). It covers the whole installation, setup, and deployment along with other useful details on how to run Karafka.
41
57
 
42
- If you have any questions about using Karafka, feel free to join our [Gitter](https://gitter.im/karafka/karafka) chat channel.
58
+ If you have any questions about using Karafka, feel free to join our [Slack](https://slack.karafka.io) chat channel.
43
59
 
44
60
  ## Getting started
45
61
 
@@ -67,35 +83,16 @@ and follow the instructions from the [example app Wiki](https://github.com/karaf
67
83
 
68
84
  If you need more details and know how on how to start Karafka with a clean installation, read the [Getting started page](https://github.com/karafka/karafka/wiki/Getting-started) section of our Wiki.
69
85
 
70
- ## Notice
71
-
72
- Karafka framework and Karafka team are __not__ related to Kafka streaming service called CloudKarafka in any matter. We don't recommend nor discourage usage of their platform.
73
-
74
86
  ## References
75
87
 
76
88
  * [Karafka framework](https://github.com/karafka/karafka)
77
- * [Karafka Travis CI](https://travis-ci.org/karafka/karafka)
89
+ * [Karafka GitHub Actions](https://github.com/karafka/karafka/actions)
78
90
  * [Karafka Coditsu](https://app.coditsu.io/karafka/repositories/karafka)
79
91
 
80
92
  ## Note on contributions
81
93
 
82
- First, thank you for considering contributing to Karafka! It's people like you that make the open source community such a great community!
83
-
84
- Each pull request must pass all the RSpec specs and meet our quality requirements.
85
-
86
- To check if everything is as it should be, we use [Coditsu](https://coditsu.io) that combines multiple linters and code analyzers for both code and documentation. Once you're done with your changes, submit a pull request.
87
-
88
- Coditsu will automatically check your work against our quality standards. You can find your commit check results on the [builds page](https://app.coditsu.io/karafka/commit_builds) of Karafka organization.
89
-
90
- [![coditsu](https://coditsu.io/assets/quality_bar.svg)](https://app.coditsu.io/karafka/commit_builds)
91
-
92
- ## Contributors
93
-
94
- This project exists thanks to all the people who contribute.
95
- <a href="https://github.com/karafka/karafka/graphs/contributors"><img src="https://opencollective.com/karafka/contributors.svg?width=890" /></a>
96
-
97
- ## Sponsors
94
+ First, thank you for considering contributing to the Karafka ecosystem! It's people like you that make the open source community such a great community!
98
95
 
99
- We are looking for sustainable sponsorship. If your company is relying on Karafka framework or simply want to see Karafka evolve faster to meet your requirements, please consider backing the project.
96
+ Each pull request must pass all the RSpec specs, integration tests and meet our quality requirements.
100
97
 
101
- Please contact [Maciej Mensfeld](mailto:maciej@coditsu.io) directly for more details.
98
+ Fork it, update and wait for the Github Actions results.