rimless 1.7.6 → 1.8.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
- data/CHANGELOG.md +42 -30
- data/lib/rimless/consumer.rb +13 -2
- data/lib/rimless/kafka_helpers.rb +10 -1
- data/lib/rimless/karafka/base64_interchanger.rb +5 -4
- data/lib/rimless/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a1deea4fa3747418c007acbf6eadb5634b97f3e5fc3ec221a78d6cf4f8c10d42
|
|
4
|
+
data.tar.gz: 939c0455cc813c211a2f934ee0cad879d06bc28faef5d03ab5ca7906bf5c015e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e73bffa03e3c7f5b1635ae1eeb79cc7de8748e841d7d7aa027def3b9ef62b3e068cd04c04349cf498cc55b94d13d5a7538be5c7c599707c72526c72d94a716bd
|
|
7
|
+
data.tar.gz: b33dd85d1d5a915483de9b2836f184ad17e4cfb180902b53e41a14ee1283683d8f7838acd51326a68758663ea27bdfc9e419b5a461d40f75758ef035911da776
|
data/CHANGELOG.md
CHANGED
|
@@ -2,36 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
* TODO: Replace this bullet point with an actual description of a change.
|
|
4
4
|
|
|
5
|
-
### 1.
|
|
5
|
+
### 1.8.0 (14 November 2024)
|
|
6
|
+
|
|
7
|
+
* Added support for custom topic names via the `full_name:` keyword argument on
|
|
8
|
+
the consumer routing table (#44)
|
|
9
|
+
* Added support to pass a block to the routing table
|
|
10
|
+
(`Rimless.consumer.topics`) to add custom topic configurations (#44)
|
|
11
|
+
|
|
12
|
+
### 1.7.7 (19 September 2024)
|
|
13
|
+
|
|
14
|
+
* Corrected the Sidekiq interchanger decoding, which is caused by an upstream
|
|
15
|
+
update of the karafka-sidekiq-backend gem (#43)
|
|
16
|
+
|
|
17
|
+
### 1.7.6 (19 September 2024)
|
|
6
18
|
|
|
7
19
|
* Added a monkey-patch for the constellation Karafka 1.4 and Thor 1.3,
|
|
8
20
|
on Ruby >=2.7 (#42)
|
|
9
21
|
|
|
10
|
-
### 1.7.5
|
|
22
|
+
### 1.7.5 (15 August 2024)
|
|
11
23
|
|
|
12
24
|
* Just a retag of 1.7.1
|
|
13
25
|
|
|
14
|
-
### 1.7.4
|
|
26
|
+
### 1.7.4 (15 August 2024)
|
|
15
27
|
|
|
16
28
|
* Just a retag of 1.7.1
|
|
17
29
|
|
|
18
|
-
### 1.7.3
|
|
30
|
+
### 1.7.3 (15 August 2024)
|
|
19
31
|
|
|
20
32
|
* Just a retag of 1.7.1
|
|
21
33
|
|
|
22
|
-
### 1.7.2
|
|
34
|
+
### 1.7.2 (9 August 2024)
|
|
23
35
|
|
|
24
36
|
* Just a retag of 1.7.1
|
|
25
37
|
|
|
26
|
-
### 1.7.1
|
|
38
|
+
### 1.7.1 (9 August 2024)
|
|
27
39
|
|
|
28
40
|
* Added API docs building to continuous integration (#41)
|
|
29
41
|
|
|
30
|
-
### 1.7.0
|
|
42
|
+
### 1.7.0 (8 July 2024)
|
|
31
43
|
|
|
32
44
|
* Added CI tests for Rails 6.1 and 7.1 (#39)
|
|
33
45
|
|
|
34
|
-
### 1.6.0
|
|
46
|
+
### 1.6.0 (3 July 2024)
|
|
35
47
|
|
|
36
48
|
* Dropped support for Ruby <2.7 (#38)
|
|
37
49
|
* Moved the schema file validation into the retry block for parallel execution
|
|
@@ -39,34 +51,34 @@
|
|
|
39
51
|
* Updated the [Kafka Playground](./doc/kafka-playground) to the latest
|
|
40
52
|
Apache Kafka (3.7) and Schema Registry (7.6) versions (#35)
|
|
41
53
|
|
|
42
|
-
### 1.5.1
|
|
54
|
+
### 1.5.1 (26 April 2024)
|
|
43
55
|
|
|
44
56
|
* Added a retry to write compiled schema files as this may fail on parallel
|
|
45
57
|
execution (#33)
|
|
46
58
|
|
|
47
|
-
### 1.5.0
|
|
59
|
+
### 1.5.0 (4 December 2023)
|
|
48
60
|
|
|
49
61
|
* Do not extend the `Rimless.logger` to write to stdout by default when running
|
|
50
62
|
in the `development` environment - this generates duplicated messages when
|
|
51
63
|
the configured logger already writes to stdout. A new configuration was added
|
|
52
64
|
`Rimless.configuration.extend_dev_logger = false` was added (#32)
|
|
53
65
|
|
|
54
|
-
### 1.4.2
|
|
66
|
+
### 1.4.2 (12 July 2023)
|
|
55
67
|
|
|
56
68
|
* Reverted to use `yield_self` instead of `then` in order to support Ruby 2.5
|
|
57
69
|
as advertised (broken since #19, 1.3.0) (#31)
|
|
58
70
|
|
|
59
|
-
### 1.4.1
|
|
71
|
+
### 1.4.1 (5 July 2023)
|
|
60
72
|
|
|
61
73
|
* Moved the development dependencies from the gemspec to the Gemfile (#29)
|
|
62
74
|
* Pinned Karafka gem <1.4.15 in order to suppress the
|
|
63
75
|
`I_ACCEPT_CRITICAL_ERRORS_IN_KARAFKA_1_4=true` agony (#30)
|
|
64
76
|
|
|
65
|
-
### 1.4.0
|
|
77
|
+
### 1.4.0 (24 February 2023)
|
|
66
78
|
|
|
67
79
|
* Added support for Gem release automation
|
|
68
80
|
|
|
69
|
-
### 1.3.0
|
|
81
|
+
### 1.3.0 (18 January 2023)
|
|
70
82
|
|
|
71
83
|
* Bundler >= 2.3 is from now on required as minimal version (#19)
|
|
72
84
|
* Dropped support for Ruby < 2.5 (#19)
|
|
@@ -74,49 +86,49 @@
|
|
|
74
86
|
* Updated all development/runtime gems to their latest
|
|
75
87
|
Ruby 2.5 compatible version (#19)
|
|
76
88
|
|
|
77
|
-
### 1.2.0
|
|
89
|
+
### 1.2.0 (4 October 2021)
|
|
78
90
|
|
|
79
91
|
* Added a `capture_kafka_messages` helper for RSpec (#12)
|
|
80
92
|
|
|
81
|
-
### 1.1.1
|
|
93
|
+
### 1.1.1 (12 May 2021)
|
|
82
94
|
|
|
83
95
|
* Corrected the GNU Make release target
|
|
84
96
|
|
|
85
|
-
### 1.1.0
|
|
97
|
+
### 1.1.0 (23 October 2020)
|
|
86
98
|
|
|
87
99
|
* Added support for Karafka `~> 1.4.0` and set is as minimum dependency version
|
|
88
100
|
(#10)
|
|
89
101
|
|
|
90
|
-
### 1.0.4
|
|
102
|
+
### 1.0.4 (14 August 2020)
|
|
91
103
|
|
|
92
104
|
* Mocked WaterDrop producers in the rimless rspec helper so that tests
|
|
93
105
|
won't actually talk to Kafka (#9)
|
|
94
106
|
|
|
95
|
-
### 1.0.3
|
|
107
|
+
### 1.0.3 (14 May 2020)
|
|
96
108
|
|
|
97
109
|
* Corrected broken stats when no consumer is yet defined (#8)
|
|
98
110
|
|
|
99
|
-
### 1.0.2
|
|
111
|
+
### 1.0.2 (11 March 2020)
|
|
100
112
|
|
|
101
113
|
* Only load the statistics rake task when Rails is available and the
|
|
102
114
|
environment is development (instead of not production, this may cause issues
|
|
103
115
|
for +canary+ or +stage+ Rails environments)
|
|
104
116
|
|
|
105
|
-
### 1.0.1
|
|
117
|
+
### 1.0.1 (11 March 2020)
|
|
106
118
|
|
|
107
119
|
* Added the missing +Karafka::Testing::RSpec::Helpers+ include to the
|
|
108
120
|
RSpec configuration
|
|
109
121
|
|
|
110
|
-
### 1.0.0
|
|
122
|
+
### 1.0.0 (11 March 2020)
|
|
111
123
|
|
|
112
124
|
* Dropped support for Ruby 2.3/2.4 and added support for Rails 6.0 (#6)
|
|
113
125
|
* Implemented a simple opinionated Kafka consumer setup (#7)
|
|
114
126
|
|
|
115
|
-
### 0.3.0
|
|
127
|
+
### 0.3.0 (8 November 2019)
|
|
116
128
|
|
|
117
129
|
* Upgraded the avro_turf gem (`~> 0.11.0`) (#5)
|
|
118
130
|
|
|
119
|
-
### 0.2.1
|
|
131
|
+
### 0.2.1 (13 August 2019)
|
|
120
132
|
|
|
121
133
|
* Added support for the
|
|
122
134
|
[parallel_tests](https://github.com/grosser/parallel_tests) gem and
|
|
@@ -124,7 +136,7 @@
|
|
|
124
136
|
thread. This fixes all race conditions which slow down or break user test
|
|
125
137
|
suites.
|
|
126
138
|
|
|
127
|
-
### 0.2.0
|
|
139
|
+
### 0.2.0 (5 June 2019)
|
|
128
140
|
|
|
129
141
|
* Added the `Rimless.encode` (`.avro_encode`) and `Rimless.decode`
|
|
130
142
|
(`.avro_decode`) helpers/shortcuts to simplify the interaction with the
|
|
@@ -143,29 +155,29 @@
|
|
|
143
155
|
of the compiled schema directory caused previously file read errors when a
|
|
144
156
|
parallel process started a recompilation.
|
|
145
157
|
|
|
146
|
-
### 0.1.4
|
|
158
|
+
### 0.1.4 (17 April 2019)
|
|
147
159
|
|
|
148
160
|
* Reconfigure (reset) the AvroTurf instance on tests to avoid caching issues
|
|
149
161
|
(on failed tests the message decoding was not working which results in
|
|
150
162
|
unrelated errors, instead of showing the actual test failure)
|
|
151
163
|
|
|
152
|
-
### 0.1.3
|
|
164
|
+
### 0.1.3 (16 April 2019)
|
|
153
165
|
|
|
154
166
|
* Check for unset and empty values while configuring dependencies
|
|
155
167
|
|
|
156
|
-
### 0.1.2
|
|
168
|
+
### 0.1.2 (16 April 2019)
|
|
157
169
|
|
|
158
170
|
* Skip the configuration of the AvroTurf gem in case no schema registry URL is
|
|
159
171
|
configured, this allows the smooth run of Rails asset precompilations without
|
|
160
172
|
full environment configurations (eg. on CI)
|
|
161
173
|
|
|
162
|
-
### 0.1.1
|
|
174
|
+
### 0.1.1 (16 April 2019)
|
|
163
175
|
|
|
164
176
|
* Skip the configuration of the WaterDrop gem in case no brokers are
|
|
165
177
|
configured, this allows the smooth run of Rails asset precompilations without
|
|
166
178
|
full environment configurations (eg. on CI)
|
|
167
179
|
|
|
168
|
-
### 0.1.0
|
|
180
|
+
### 0.1.0 (16 April 2019)
|
|
169
181
|
|
|
170
182
|
* The first release with support for simple Apache Avro message producing on
|
|
171
183
|
Apache Kafka/Confluent Schema Registry
|
data/lib/rimless/consumer.rb
CHANGED
|
@@ -126,12 +126,23 @@ module Rimless
|
|
|
126
126
|
# topics({ app: :test_app, name: :admins } => YourConsumer)
|
|
127
127
|
# topics({ app: :test_app, names: %i[users admins] } => YourConsumer)
|
|
128
128
|
#
|
|
129
|
+
# Examples:
|
|
130
|
+
#
|
|
131
|
+
# topics do
|
|
132
|
+
# topic('name') do
|
|
133
|
+
# consumer CustomConsumer
|
|
134
|
+
# end
|
|
135
|
+
# end
|
|
136
|
+
#
|
|
129
137
|
# @param topics [Hash{Hash => Class}] the topic to consumer mapping
|
|
138
|
+
# @yield the given block on the routing table
|
|
130
139
|
#
|
|
131
140
|
# rubocop:disable Metrics/MethodLength because of the Karafka DSL
|
|
132
|
-
def topics(topics)
|
|
141
|
+
def topics(topics = [], &block)
|
|
133
142
|
consumer_groups.draw do
|
|
134
|
-
consumer_group
|
|
143
|
+
consumer_group(Rimless.configuration.client_id) do
|
|
144
|
+
instance_exec(&block) if block_given?
|
|
145
|
+
|
|
135
146
|
topics.each do |topic_parts, dest_consumer|
|
|
136
147
|
Rimless.consumer.topic_names(topic_parts).each do |topic_name|
|
|
137
148
|
topic(topic_name) do
|
|
@@ -19,14 +19,21 @@ module Rimless
|
|
|
19
19
|
# Rimless.topic(:users, app: 'test-api')
|
|
20
20
|
# @example Mix and match
|
|
21
21
|
# Rimless.topic(name: 'test', app: :fancy_app)
|
|
22
|
+
# @example Full name - use as is
|
|
23
|
+
# Rimless.topic(full_name: 'my.custom.topic.name')
|
|
22
24
|
#
|
|
23
|
-
# rubocop:disable Metrics/
|
|
25
|
+
# rubocop:disable Metrics/MethodLength because of the usage flexibility
|
|
26
|
+
# rubocop:disable Metrics/AbcSize dito
|
|
24
27
|
# rubocop:disable Metrics/CyclomaticComplexity dito
|
|
28
|
+
# rubocop:disable Metrics/PerceivedComplexity dito
|
|
25
29
|
def topic(*args)
|
|
26
30
|
opts = args.last
|
|
27
31
|
name = args.first if [String, Symbol].member?(args.first.class)
|
|
28
32
|
|
|
29
33
|
if opts.is_a?(Hash)
|
|
34
|
+
# When we got a full name, we use it as is
|
|
35
|
+
return opts[:full_name] if opts.key? :full_name
|
|
36
|
+
|
|
30
37
|
name = opts[:name] if opts.key?(:name)
|
|
31
38
|
app = opts[:app] if opts.key?(:app)
|
|
32
39
|
end
|
|
@@ -38,8 +45,10 @@ module Rimless
|
|
|
38
45
|
|
|
39
46
|
"#{Rimless.topic_prefix(app)}#{name}".tr('_', '-')
|
|
40
47
|
end
|
|
48
|
+
# rubocop:enable Metrics/MethodLength
|
|
41
49
|
# rubocop:enable Metrics/AbcSize
|
|
42
50
|
# rubocop:enable Metrics/CyclomaticComplexity
|
|
51
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
|
43
52
|
|
|
44
53
|
# Send a single message to Apache Kafka. The data is encoded according to
|
|
45
54
|
# the given Apache Avro schema. The destination Kafka topic may be a
|
|
@@ -11,7 +11,8 @@ module Rimless
|
|
|
11
11
|
# Encode a binary Apache Kafka message(s) so they can be passed to the
|
|
12
12
|
# Sidekiq +Rimless::ConsumerJob+.
|
|
13
13
|
#
|
|
14
|
-
# @param params_batch [
|
|
14
|
+
# @param params_batch [Karafka::Params::ParamsBatch] the karafka params
|
|
15
|
+
# batch object
|
|
15
16
|
# @return [String] the marshaled+base64 encoded data
|
|
16
17
|
def encode(params_batch)
|
|
17
18
|
Base64.encode64(Marshal.dump(super))
|
|
@@ -21,9 +22,9 @@ module Rimless
|
|
|
21
22
|
# the Sidekiq +Rimless::ConsumerJob+.
|
|
22
23
|
#
|
|
23
24
|
# @param params_string [String] the marshaled+base64 encoded data
|
|
24
|
-
# @return [
|
|
25
|
-
def decode(
|
|
26
|
-
Marshal.load(Base64.decode64(
|
|
25
|
+
# @return [Array<Hash>] the unmarshaled+base64 decoded data
|
|
26
|
+
def decode(params_batch)
|
|
27
|
+
super(Marshal.load(Base64.decode64(params_batch))).map(&:stringify_keys)
|
|
27
28
|
end
|
|
28
29
|
end
|
|
29
30
|
# rubocop:enable Security/MarshalLoad
|
data/lib/rimless/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rimless
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hermann Mayer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-11-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|