karafka 1.2.8 → 1.4.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.coditsu/ci.yml +3 -0
- data/.console_irbrc +1 -3
- data/.diffend.yml +3 -0
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +50 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ci.yml +52 -0
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +134 -14
- data/CODE_OF_CONDUCT.md +1 -1
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +92 -81
- data/README.md +9 -12
- data/bin/karafka +1 -1
- data/certs/mensfeld.pem +25 -0
- data/config/errors.yml +38 -5
- data/docker-compose.yml +17 -0
- data/karafka.gemspec +18 -17
- data/lib/karafka.rb +10 -16
- data/lib/karafka/app.rb +14 -6
- data/lib/karafka/attributes_map.rb +5 -10
- data/lib/karafka/base_consumer.rb +19 -30
- data/lib/karafka/base_responder.rb +45 -27
- data/lib/karafka/cli.rb +2 -2
- data/lib/karafka/cli/console.rb +11 -9
- data/lib/karafka/cli/flow.rb +9 -7
- data/lib/karafka/cli/info.rb +4 -2
- data/lib/karafka/cli/install.rb +30 -6
- data/lib/karafka/cli/server.rb +11 -6
- data/lib/karafka/code_reloader.rb +67 -0
- data/lib/karafka/connection/api_adapter.rb +22 -9
- data/lib/karafka/connection/batch_delegator.rb +55 -0
- data/lib/karafka/connection/builder.rb +5 -3
- data/lib/karafka/connection/client.rb +31 -31
- data/lib/karafka/connection/listener.rb +26 -15
- data/lib/karafka/connection/message_delegator.rb +36 -0
- data/lib/karafka/consumers/batch_metadata.rb +10 -0
- data/lib/karafka/consumers/callbacks.rb +32 -15
- data/lib/karafka/consumers/includer.rb +31 -18
- data/lib/karafka/consumers/responders.rb +2 -2
- data/lib/karafka/contracts.rb +10 -0
- data/lib/karafka/contracts/config.rb +21 -0
- data/lib/karafka/contracts/consumer_group.rb +206 -0
- data/lib/karafka/contracts/consumer_group_topic.rb +19 -0
- data/lib/karafka/contracts/responder_usage.rb +54 -0
- data/lib/karafka/contracts/server_cli_options.rb +31 -0
- data/lib/karafka/errors.rb +17 -16
- data/lib/karafka/fetcher.rb +28 -30
- data/lib/karafka/helpers/class_matcher.rb +12 -2
- data/lib/karafka/helpers/config_retriever.rb +1 -1
- data/lib/karafka/helpers/inflector.rb +26 -0
- data/lib/karafka/helpers/multi_delegator.rb +0 -1
- data/lib/karafka/instrumentation/logger.rb +9 -6
- data/lib/karafka/instrumentation/monitor.rb +15 -9
- data/lib/karafka/instrumentation/proctitle_listener.rb +36 -0
- data/lib/karafka/instrumentation/stdout_listener.rb +140 -0
- data/lib/karafka/params/batch_metadata.rb +26 -0
- data/lib/karafka/params/builders/batch_metadata.rb +30 -0
- data/lib/karafka/params/builders/params.rb +38 -0
- data/lib/karafka/params/builders/params_batch.rb +25 -0
- data/lib/karafka/params/metadata.rb +20 -0
- data/lib/karafka/params/params.rb +54 -0
- data/lib/karafka/params/params_batch.rb +35 -21
- data/lib/karafka/patches/ruby_kafka.rb +21 -8
- data/lib/karafka/persistence/client.rb +15 -11
- data/lib/karafka/persistence/{consumer.rb → consumers.rb} +20 -13
- data/lib/karafka/persistence/topics.rb +48 -0
- data/lib/karafka/process.rb +0 -2
- data/lib/karafka/responders/builder.rb +1 -1
- data/lib/karafka/responders/topic.rb +6 -8
- data/lib/karafka/routing/builder.rb +36 -8
- data/lib/karafka/routing/consumer_group.rb +1 -1
- data/lib/karafka/routing/consumer_mapper.rb +9 -9
- data/lib/karafka/routing/proxy.rb +10 -1
- data/lib/karafka/routing/topic.rb +5 -3
- data/lib/karafka/routing/topic_mapper.rb +16 -18
- data/lib/karafka/serialization/json/deserializer.rb +27 -0
- data/lib/karafka/serialization/json/serializer.rb +31 -0
- data/lib/karafka/server.rb +29 -28
- data/lib/karafka/setup/config.rb +67 -37
- data/lib/karafka/setup/configurators/water_drop.rb +7 -3
- data/lib/karafka/setup/dsl.rb +0 -1
- data/lib/karafka/status.rb +7 -3
- data/lib/karafka/templates/{application_consumer.rb.example → application_consumer.rb.erb} +2 -1
- data/lib/karafka/templates/{application_responder.rb.example → application_responder.rb.erb} +0 -0
- data/lib/karafka/templates/karafka.rb.erb +92 -0
- data/lib/karafka/version.rb +1 -1
- metadata +94 -72
- metadata.gz.sig +0 -0
- data/.travis.yml +0 -21
- data/lib/karafka/callbacks.rb +0 -30
- data/lib/karafka/callbacks/config.rb +0 -22
- data/lib/karafka/callbacks/dsl.rb +0 -16
- data/lib/karafka/connection/delegator.rb +0 -46
- data/lib/karafka/instrumentation/listener.rb +0 -112
- data/lib/karafka/loader.rb +0 -28
- data/lib/karafka/params/dsl.rb +0 -156
- data/lib/karafka/parsers/json.rb +0 -38
- data/lib/karafka/patches/dry_configurable.rb +0 -35
- data/lib/karafka/persistence/topic.rb +0 -29
- data/lib/karafka/schemas/config.rb +0 -24
- data/lib/karafka/schemas/consumer_group.rb +0 -78
- data/lib/karafka/schemas/consumer_group_topic.rb +0 -18
- data/lib/karafka/schemas/responder_usage.rb +0 -39
- data/lib/karafka/schemas/server_cli_options.rb +0 -43
- data/lib/karafka/setup/configurators/base.rb +0 -29
- data/lib/karafka/setup/configurators/params.rb +0 -25
- data/lib/karafka/templates/karafka.rb.example +0 -54
data/Gemfile.lock
CHANGED
@@ -1,128 +1,139 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
karafka (1.
|
5
|
-
|
6
|
-
dry-
|
7
|
-
dry-
|
8
|
-
dry-
|
9
|
-
|
10
|
-
|
11
|
-
multi_json (>= 1.12)
|
4
|
+
karafka (1.4.0)
|
5
|
+
dry-configurable (~> 0.8)
|
6
|
+
dry-inflector (~> 0.1)
|
7
|
+
dry-monitor (~> 0.3)
|
8
|
+
dry-validation (~> 1.2)
|
9
|
+
envlogic (~> 1.1)
|
10
|
+
irb (~> 1.0)
|
12
11
|
rake (>= 11.3)
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
ruby-kafka (>= 1.0.0)
|
13
|
+
thor (>= 0.20)
|
14
|
+
waterdrop (~> 1.4.0)
|
15
|
+
zeitwerk (~> 2.1)
|
17
16
|
|
18
17
|
GEM
|
19
18
|
remote: https://rubygems.org/
|
20
19
|
specs:
|
21
|
-
activesupport (
|
20
|
+
activesupport (6.0.3.2)
|
22
21
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
23
22
|
i18n (>= 0.7, < 2)
|
24
23
|
minitest (~> 5.1)
|
25
24
|
tzinfo (~> 1.1)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
26
|
+
byebug (11.1.3)
|
27
|
+
concurrent-ruby (1.1.7)
|
28
|
+
delivery_boy (1.0.1)
|
29
|
+
king_konf (~> 0.3)
|
30
|
+
ruby-kafka (~> 1.0)
|
31
|
+
diff-lcs (1.4.4)
|
32
|
+
digest-crc (0.6.1)
|
33
|
+
rake (~> 13.0)
|
34
|
+
docile (1.3.2)
|
35
|
+
dry-configurable (0.11.6)
|
35
36
|
concurrent-ruby (~> 1.0)
|
36
|
-
|
37
|
+
dry-core (~> 0.4, >= 0.4.7)
|
38
|
+
dry-equalizer (~> 0.2)
|
39
|
+
dry-container (0.7.2)
|
37
40
|
concurrent-ruby (~> 1.0)
|
38
41
|
dry-configurable (~> 0.1, >= 0.1.3)
|
39
|
-
dry-core (0.4.
|
42
|
+
dry-core (0.4.9)
|
40
43
|
concurrent-ruby (~> 1.0)
|
41
|
-
dry-equalizer (0.
|
42
|
-
dry-events (0.
|
44
|
+
dry-equalizer (0.3.0)
|
45
|
+
dry-events (0.2.0)
|
43
46
|
concurrent-ruby (~> 1.0)
|
44
47
|
dry-core (~> 0.4)
|
45
48
|
dry-equalizer (~> 0.2)
|
46
|
-
dry-inflector (0.
|
47
|
-
dry-
|
48
|
-
|
49
|
+
dry-inflector (0.2.0)
|
50
|
+
dry-initializer (3.0.3)
|
51
|
+
dry-logic (1.0.7)
|
52
|
+
concurrent-ruby (~> 1.0)
|
49
53
|
dry-core (~> 0.2)
|
50
54
|
dry-equalizer (~> 0.2)
|
51
|
-
dry-monitor (0.
|
55
|
+
dry-monitor (0.3.2)
|
52
56
|
dry-configurable (~> 0.5)
|
57
|
+
dry-core (~> 0.4)
|
58
|
+
dry-equalizer (~> 0.2)
|
59
|
+
dry-events (~> 0.2)
|
60
|
+
dry-schema (1.5.4)
|
61
|
+
concurrent-ruby (~> 1.0)
|
62
|
+
dry-configurable (~> 0.8, >= 0.8.3)
|
63
|
+
dry-core (~> 0.4)
|
53
64
|
dry-equalizer (~> 0.2)
|
54
|
-
dry-
|
55
|
-
|
56
|
-
|
65
|
+
dry-initializer (~> 3.0)
|
66
|
+
dry-logic (~> 1.0)
|
67
|
+
dry-types (~> 1.4)
|
68
|
+
dry-types (1.4.0)
|
57
69
|
concurrent-ruby (~> 1.0)
|
58
70
|
dry-container (~> 0.3)
|
59
71
|
dry-core (~> 0.4, >= 0.4.4)
|
60
|
-
dry-equalizer (~> 0.
|
72
|
+
dry-equalizer (~> 0.3)
|
61
73
|
dry-inflector (~> 0.1, >= 0.1.2)
|
62
|
-
dry-logic (~> 0
|
63
|
-
dry-validation (
|
74
|
+
dry-logic (~> 1.0, >= 1.0.2)
|
75
|
+
dry-validation (1.5.6)
|
64
76
|
concurrent-ruby (~> 1.0)
|
65
|
-
dry-
|
66
|
-
dry-core (~> 0.
|
77
|
+
dry-container (~> 0.7, >= 0.7.1)
|
78
|
+
dry-core (~> 0.4)
|
67
79
|
dry-equalizer (~> 0.2)
|
68
|
-
dry-
|
69
|
-
dry-
|
70
|
-
envlogic (1.1.
|
80
|
+
dry-initializer (~> 3.0)
|
81
|
+
dry-schema (~> 1.5, >= 1.5.2)
|
82
|
+
envlogic (1.1.2)
|
71
83
|
dry-inflector (~> 0.1)
|
72
|
-
|
84
|
+
factory_bot (6.1.0)
|
85
|
+
activesupport (>= 5.0.0)
|
86
|
+
i18n (1.8.5)
|
73
87
|
concurrent-ruby (~> 1.0)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
rspec-
|
85
|
-
rspec-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
rspec-expectations (3.8.1)
|
88
|
+
io-console (0.5.6)
|
89
|
+
irb (1.2.4)
|
90
|
+
reline (>= 0.0.1)
|
91
|
+
king_konf (0.3.7)
|
92
|
+
minitest (5.14.2)
|
93
|
+
rake (13.0.1)
|
94
|
+
reline (0.1.4)
|
95
|
+
io-console (~> 0.5)
|
96
|
+
rspec (3.9.0)
|
97
|
+
rspec-core (~> 3.9.0)
|
98
|
+
rspec-expectations (~> 3.9.0)
|
99
|
+
rspec-mocks (~> 3.9.0)
|
100
|
+
rspec-core (3.9.2)
|
101
|
+
rspec-support (~> 3.9.3)
|
102
|
+
rspec-expectations (3.9.2)
|
90
103
|
diff-lcs (>= 1.2.0, < 2.0)
|
91
|
-
rspec-support (~> 3.
|
92
|
-
rspec-mocks (3.
|
104
|
+
rspec-support (~> 3.9.0)
|
105
|
+
rspec-mocks (3.9.1)
|
93
106
|
diff-lcs (>= 1.2.0, < 2.0)
|
94
|
-
rspec-support (~> 3.
|
95
|
-
rspec-support (3.
|
96
|
-
ruby-kafka (
|
107
|
+
rspec-support (~> 3.9.0)
|
108
|
+
rspec-support (3.9.3)
|
109
|
+
ruby-kafka (1.2.0)
|
97
110
|
digest-crc
|
98
|
-
simplecov (0.
|
111
|
+
simplecov (0.19.0)
|
99
112
|
docile (~> 1.1)
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
thor (0.20.0)
|
113
|
+
simplecov-html (~> 0.11)
|
114
|
+
simplecov-html (0.12.2)
|
115
|
+
thor (1.0.1)
|
104
116
|
thread_safe (0.3.6)
|
105
|
-
|
106
|
-
tzinfo (1.2.5)
|
117
|
+
tzinfo (1.2.7)
|
107
118
|
thread_safe (~> 0.1)
|
108
|
-
waterdrop (1.
|
109
|
-
delivery_boy (
|
110
|
-
dry-configurable (~> 0.
|
111
|
-
dry-monitor (~> 0.
|
112
|
-
dry-validation (~>
|
113
|
-
|
114
|
-
|
119
|
+
waterdrop (1.4.0)
|
120
|
+
delivery_boy (>= 0.2, < 2.x)
|
121
|
+
dry-configurable (~> 0.8)
|
122
|
+
dry-monitor (~> 0.3)
|
123
|
+
dry-validation (~> 1.2)
|
124
|
+
ruby-kafka (>= 0.7.8)
|
125
|
+
zeitwerk (~> 2.1)
|
126
|
+
zeitwerk (2.4.0)
|
115
127
|
|
116
128
|
PLATFORMS
|
117
|
-
java
|
118
129
|
ruby
|
119
130
|
|
120
131
|
DEPENDENCIES
|
121
|
-
|
132
|
+
byebug
|
133
|
+
factory_bot
|
122
134
|
karafka!
|
123
135
|
rspec
|
124
136
|
simplecov
|
125
|
-
timecop
|
126
137
|
|
127
138
|
BUNDLED WITH
|
128
|
-
1.
|
139
|
+
2.1.4
|
data/README.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/karafka/karafka)
|
4
4
|
|
5
|
+
**Note**: Documentation presented here refers to Karafka `1.4`.
|
6
|
+
|
7
|
+
If you are looking for the documentation for Karafka `1.3.x`, it can be found [here](https://github.com/karafka/wiki/tree/1.3).
|
8
|
+
|
9
|
+
## About Karafka
|
10
|
+
|
5
11
|
Framework used to simplify Apache Kafka based Ruby applications development.
|
6
12
|
|
7
13
|
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.
|
@@ -27,15 +33,6 @@ Karafka based applications can be easily deployed to any type of infrastructure,
|
|
27
33
|
* Docker
|
28
34
|
* Terraform
|
29
35
|
|
30
|
-
## Kafka 0.10 or prior
|
31
|
-
|
32
|
-
If you're using Kafka 0.10, please lock `ruby-kafka` gem in your Gemfile to version `0.6.8`:
|
33
|
-
|
34
|
-
```ruby
|
35
|
-
gem 'karafka'
|
36
|
-
gem 'ruby-kafka', '~> 0.6.8'
|
37
|
-
```
|
38
|
-
|
39
36
|
## Support
|
40
37
|
|
41
38
|
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.
|
@@ -52,7 +49,7 @@ If you're completely new to the subject, you can start with our "Kafka on Rails"
|
|
52
49
|
If you want to get started with Kafka and Karafka as fast as possible, then the best idea is to just clone our example repository:
|
53
50
|
|
54
51
|
```bash
|
55
|
-
git clone https://github.com/karafka/
|
52
|
+
git clone https://github.com/karafka/example-app ./example_app
|
56
53
|
```
|
57
54
|
|
58
55
|
then, just bundle install all the dependencies:
|
@@ -62,7 +59,7 @@ cd ./example_app
|
|
62
59
|
bundle install
|
63
60
|
```
|
64
61
|
|
65
|
-
and follow the instructions from the [example app Wiki](https://github.com/karafka/
|
62
|
+
and follow the instructions from the [example app Wiki](https://github.com/karafka/example-app/blob/master/README.md).
|
66
63
|
|
67
64
|
**Note**: you need to ensure, that you have Kafka up and running and you need to configure Kafka seed_brokers in the ```karafka.rb``` file.
|
68
65
|
|
@@ -99,4 +96,4 @@ This project exists thanks to all the people who contribute.
|
|
99
96
|
|
100
97
|
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.
|
101
98
|
|
102
|
-
Please contact [Maciej Mensfeld](mailto:maciej@
|
99
|
+
Please contact [Maciej Mensfeld](mailto:maciej@mensfeld.pl) directly for more details.
|
data/bin/karafka
CHANGED
@@ -10,7 +10,7 @@ else
|
|
10
10
|
# However when it is unavailable, we still want to be able to run help command
|
11
11
|
# and install command as they don't require configured app itself to run
|
12
12
|
raise(
|
13
|
-
Karafka::Errors::
|
13
|
+
Karafka::Errors::MissingBootFileError,
|
14
14
|
Karafka.boot_file
|
15
15
|
) unless %w[-h install].include?(ARGV[0])
|
16
16
|
end
|
data/certs/mensfeld.pem
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIEODCCAqCgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhtYWNp
|
3
|
+
ZWovREM9bWVuc2ZlbGQvREM9cGwwHhcNMjAwODExMDkxNTM3WhcNMjEwODExMDkx
|
4
|
+
NTM3WjAjMSEwHwYDVQQDDBhtYWNpZWovREM9bWVuc2ZlbGQvREM9cGwwggGiMA0G
|
5
|
+
CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDCpXsCgmINb6lHBXXBdyrgsBPSxC4/
|
6
|
+
2H+weJ6L9CruTiv2+2/ZkQGtnLcDgrD14rdLIHK7t0o3EKYlDT5GhD/XUVhI15JE
|
7
|
+
N7IqnPUgexe1fbZArwQ51afxz2AmPQN2BkB2oeQHXxnSWUGMhvcEZpfbxCCJH26w
|
8
|
+
hS0Ccsma8yxA6hSlGVhFVDuCr7c2L1di6cK2CtIDpfDaWqnVNJEwBYHIxrCoWK5g
|
9
|
+
sIGekVt/admS9gRhIMaIBg+Mshth5/DEyWO2QjteTodItlxfTctrfmiAl8X8T5JP
|
10
|
+
VXeLp5SSOJ5JXE80nShMJp3RFnGw5fqjX/ffjtISYh78/By4xF3a25HdWH9+qO2Z
|
11
|
+
tx0wSGc9/4gqNM0APQnjN/4YXrGZ4IeSjtE+OrrX07l0TiyikzSLFOkZCAp8oBJi
|
12
|
+
Fhlosz8xQDJf7mhNxOaZziqASzp/hJTU/tuDKl5+ql2icnMv5iV/i6SlmvU29QNg
|
13
|
+
LCV71pUv0pWzN+OZbHZKWepGhEQ3cG9MwvkCAwEAAaN3MHUwCQYDVR0TBAIwADAL
|
14
|
+
BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFImGed2AXS070ohfRidiCEhXEUN+MB0GA1Ud
|
15
|
+
EQQWMBSBEm1hY2llakBtZW5zZmVsZC5wbDAdBgNVHRIEFjAUgRJtYWNpZWpAbWVu
|
16
|
+
c2ZlbGQucGwwDQYJKoZIhvcNAQELBQADggGBAKiHpwoENVrMi94V1zD4o8/6G3AU
|
17
|
+
gWz4udkPYHTZLUy3dLznc/sNjdkJFWT3E6NKYq7c60EpJ0m0vAEg5+F5pmNOsvD3
|
18
|
+
2pXLj9kisEeYhR516HwXAvtngboUcb75skqvBCU++4Pu7BRAPjO1/ihLSBexbwSS
|
19
|
+
fF+J5OWNuyHHCQp+kGPLtXJe2yUYyvSWDj3I2//Vk0VhNOIlaCS1+5/P3ZJThOtm
|
20
|
+
zJUBI7h3HgovwRpcnmk2mXTmU4Zx/bCzX8EA6VY0khEvnmiq7S6eBF0H9qH8KyQ6
|
21
|
+
EkVLpvmUDFcf/uNaBQdazEMB5jYtwoA8gQlANETNGPi51KlkukhKgaIEDMkBDJOx
|
22
|
+
65N7DzmkcyY0/GwjIVIxmRhcrCt1YeCUElmfFx0iida1/YRm6sB2AXqScc1+ECRi
|
23
|
+
2DND//YJUikn1zwbz1kT70XmHd97B4Eytpln7K+M1u2g1pHVEPW4owD/ammXNpUy
|
24
|
+
nt70FcDD4yxJQ+0YNiHd0N8IcVBM1TMIVctMNQ==
|
25
|
+
-----END CERTIFICATE-----
|
data/config/errors.yml
CHANGED
@@ -1,6 +1,39 @@
|
|
1
1
|
en:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
2
|
+
dry_validation:
|
3
|
+
errors:
|
4
|
+
invalid_broker_schema: >
|
5
|
+
has an invalid format
|
6
|
+
Expected schema, host and port number
|
7
|
+
Example: kafka://127.0.0.1:9092 or kafka+ssl://127.0.0.1:9092
|
8
|
+
invalid_certificate: >
|
9
|
+
is not a valid certificate
|
10
|
+
invalid_certificate_from_path: >
|
11
|
+
is not a valid certificate
|
12
|
+
invalid_private_key: >
|
13
|
+
is not a valid private key
|
14
|
+
max_timeout_size_for_exponential: >
|
15
|
+
pause_timeout cannot be more than pause_max_timeout
|
16
|
+
max_wait_time_limit:
|
17
|
+
max_wait_time cannot be more than socket_timeout
|
18
|
+
topics_names_not_unique: >
|
19
|
+
all topic names within a single consumer group must be unique
|
20
|
+
ssl_client_cert_with_ssl_client_cert_key: >
|
21
|
+
Both ssl_client_cert and ssl_client_cert_key need to be provided
|
22
|
+
ssl_client_cert_key_with_ssl_client_cert: >
|
23
|
+
Both ssl_client_cert_key and ssl_client_cert need to be provided
|
24
|
+
ssl_client_cert_chain_with_ssl_client_cert: >
|
25
|
+
Both ssl_client_cert_chain and ssl_client_cert need to be provided
|
26
|
+
ssl_client_cert_chain_with_ssl_client_cert_key: >
|
27
|
+
Both ssl_client_cert_chain and ssl_client_cert_key need to be provided
|
28
|
+
ssl_client_cert_key_password_with_ssl_client_cert_key: >
|
29
|
+
Both ssl_client_cert_key_password and ssl_client_cert_key need to be provided
|
30
|
+
does_not_respond_to_token: >
|
31
|
+
needs to respond to a #token method
|
32
|
+
required_usage_count: >
|
33
|
+
Given topic must be used at least once
|
34
|
+
pid_already_exists: >
|
35
|
+
Pidfile already exists
|
36
|
+
consumer_groups_inclusion: >
|
37
|
+
Unknown consumer group
|
38
|
+
does_not_exist:
|
39
|
+
Given file does not exist or cannot be read
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
version: '2'
|
2
|
+
services:
|
3
|
+
zookeeper:
|
4
|
+
image: wurstmeister/zookeeper
|
5
|
+
ports:
|
6
|
+
- "2181:2181"
|
7
|
+
kafka:
|
8
|
+
image: wurstmeister/kafka:1.0.1
|
9
|
+
ports:
|
10
|
+
- "9092:9092"
|
11
|
+
environment:
|
12
|
+
KAFKA_ADVERTISED_HOST_NAME: localhost
|
13
|
+
KAFKA_ADVERTISED_PORT: 9092
|
14
|
+
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
15
|
+
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
|
16
|
+
volumes:
|
17
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
data/karafka.gemspec
CHANGED
@@ -5,38 +5,39 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
|
6
6
|
require 'karafka/version'
|
7
7
|
|
8
|
+
# rubocop:disable Metrics/BlockLength
|
8
9
|
Gem::Specification.new do |spec|
|
9
10
|
spec.name = 'karafka'
|
10
11
|
spec.version = ::Karafka::VERSION
|
11
12
|
spec.platform = Gem::Platform::RUBY
|
12
13
|
spec.authors = ['Maciej Mensfeld', 'Pavlo Vavruk', 'Adam Gwozdowski']
|
13
|
-
spec.email = %w[maciej@
|
14
|
+
spec.email = %w[maciej@mensfeld.pl pavlo.vavruk@gmail.com adam99g@gmail.com]
|
14
15
|
spec.homepage = 'https://github.com/karafka/karafka'
|
15
16
|
spec.summary = 'Ruby based framework for working with Apache Kafka'
|
16
17
|
spec.description = 'Framework used to simplify Apache Kafka based Ruby applications development'
|
17
18
|
spec.license = 'MIT'
|
18
19
|
|
19
|
-
spec.add_dependency '
|
20
|
-
spec.add_dependency 'dry-
|
21
|
-
spec.add_dependency 'dry-
|
22
|
-
spec.add_dependency 'dry-
|
23
|
-
spec.add_dependency '
|
24
|
-
spec.add_dependency '
|
25
|
-
spec.add_dependency 'multi_json', '>= 1.12'
|
20
|
+
spec.add_dependency 'dry-configurable', '~> 0.8'
|
21
|
+
spec.add_dependency 'dry-inflector', '~> 0.1'
|
22
|
+
spec.add_dependency 'dry-monitor', '~> 0.3'
|
23
|
+
spec.add_dependency 'dry-validation', '~> 1.2'
|
24
|
+
spec.add_dependency 'envlogic', '~> 1.1'
|
25
|
+
spec.add_dependency 'irb', '~> 1.0'
|
26
26
|
spec.add_dependency 'rake', '>= 11.3'
|
27
|
-
spec.add_dependency '
|
28
|
-
spec.add_dependency '
|
29
|
-
spec.add_dependency '
|
30
|
-
spec.add_dependency '
|
27
|
+
spec.add_dependency 'ruby-kafka', '>= 1.0.0'
|
28
|
+
spec.add_dependency 'thor', '>= 0.20'
|
29
|
+
spec.add_dependency 'waterdrop', '~> 1.4.0'
|
30
|
+
spec.add_dependency 'zeitwerk', '~> 2.1'
|
31
31
|
|
32
|
-
spec.
|
33
|
-
\e[93mWarning:\e[0m If you're using Kafka 0.10, please lock ruby-kafka in your Gemfile to version '0.6.8':
|
34
|
-
gem 'ruby-kafka', '~> 0.6.8'
|
35
|
-
MSG
|
32
|
+
spec.required_ruby_version = '>= 2.5.0'
|
36
33
|
|
37
|
-
|
34
|
+
if $PROGRAM_NAME.end_with?('gem')
|
35
|
+
spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
|
36
|
+
end
|
38
37
|
|
38
|
+
spec.cert_chain = %w[certs/mensfeld.pem]
|
39
39
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
40
40
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
41
41
|
spec.require_paths = %w[lib]
|
42
42
|
end
|
43
|
+
# rubocop:enable Metrics/BlockLength
|
data/lib/karafka.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
%w[
|
4
|
+
delegate
|
4
5
|
English
|
5
6
|
waterdrop
|
6
7
|
kafka
|
7
8
|
envlogic
|
9
|
+
json
|
8
10
|
thor
|
11
|
+
forwardable
|
9
12
|
fileutils
|
10
|
-
multi_json
|
11
|
-
require_all
|
12
13
|
dry-configurable
|
13
14
|
dry-validation
|
15
|
+
dry/events/publisher
|
14
16
|
dry/inflector
|
15
17
|
dry/monitor/notifications
|
16
|
-
|
17
|
-
|
18
|
+
dry/core/constants
|
19
|
+
zeitwerk
|
18
20
|
].each(&method(:require))
|
19
21
|
|
20
22
|
# Karafka library
|
@@ -62,17 +64,9 @@ module Karafka
|
|
62
64
|
end
|
63
65
|
end
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
setup/config
|
70
|
-
status
|
71
|
-
schemas/config
|
72
|
-
schemas/consumer_group_topic
|
73
|
-
schemas/consumer_group
|
74
|
-
].each { |path| require_all File.join(Karafka.core_root, path + '.rb') }
|
67
|
+
Zeitwerk::Loader
|
68
|
+
.for_gem
|
69
|
+
.tap(&:setup)
|
70
|
+
.tap(&:eager_load)
|
75
71
|
|
76
|
-
Karafka::Loader.load!(Karafka.core_root)
|
77
72
|
Kafka::Consumer.prepend(Karafka::Patches::RubyKafka)
|
78
|
-
Dry::Configurable::Config.prepend(Karafka::Patches::DryConfigurable)
|