sbmt-kafka_consumer 2.1.0 → 2.3.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/.rubocop.yml +1 -1
- data/Appraisals +1 -2
- data/CHANGELOG.md +17 -0
- data/Gemfile +3 -0
- data/README.md +2 -0
- data/lib/generators/kafka_consumer/install/templates/kafka_consumer.yml +2 -0
- data/lib/sbmt/kafka_consumer/config.rb +9 -2
- data/lib/sbmt/kafka_consumer/version.rb +1 -1
- data/sbmt-kafka_consumer.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 466c2702a664bfe4ad5916c115dddb574e2108a990af6b686c5eea3298fd3a4c
|
4
|
+
data.tar.gz: 140e5ea106e9374df42dab0e372be5ff3c547a33882391a4634e368fc93b8737
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc45d190f2cd0646049392a75c3f7d1a77db081669855f13b4d3dedb6f1a143cea6830659dbff9273fbde5517e3f11259e127ecb6c5a48a08cd4f6c71bbd93ea
|
7
|
+
data.tar.gz: 852f8c6da38cdb110cb5832d85f9798001f9b2fbf3db56c5b492cca4e44dcb3fc47639b60e4e5d143c8420a0b3f0c7e1467433f31861100c0578de62c6f49bec
|
data/.rubocop.yml
CHANGED
data/Appraisals
CHANGED
@@ -3,11 +3,10 @@
|
|
3
3
|
# See compatibility table at https://www.fastruby.io/blog/ruby/rails/versions/compatibility-table.html
|
4
4
|
|
5
5
|
versions_map = {
|
6
|
-
"5.2" => %w[2.7],
|
7
6
|
"6.0" => %w[2.7],
|
8
7
|
"6.1" => %w[2.7 3.0],
|
9
8
|
"7.0" => %w[3.1],
|
10
|
-
"7.1" => %w[3.2]
|
9
|
+
"7.1" => %w[3.2, 3.3]
|
11
10
|
}
|
12
11
|
|
13
12
|
current_ruby_version = RUBY_VERSION.split(".").first(2).join(".")
|
data/CHANGELOG.md
CHANGED
@@ -13,6 +13,23 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
13
13
|
|
14
14
|
### Fixed
|
15
15
|
|
16
|
+
## [2.3.0] - 2024-05-30
|
17
|
+
|
18
|
+
### Added
|
19
|
+
|
20
|
+
- New config option `partition_assignment_strategy`
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
|
24
|
+
- Raise an exception when using the `partition.assignment.strategy` option within `kafka_options` for topics.
|
25
|
+
|
26
|
+
## [2.2.0] - 2024-05-13
|
27
|
+
|
28
|
+
### Changed
|
29
|
+
|
30
|
+
- Drop support for Rails 5.2
|
31
|
+
- Add support for Ruby 3.3
|
32
|
+
|
16
33
|
## [2.1.0] - 2024-05-13
|
17
34
|
|
18
35
|
### Added
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -69,6 +69,7 @@ default: &default
|
|
69
69
|
pause_timeout: 1
|
70
70
|
pause_max_timeout: 30
|
71
71
|
pause_with_exponential_backoff: true
|
72
|
+
partition_assignment_strategy: cooperative-sticky
|
72
73
|
auth:
|
73
74
|
kind: plaintext
|
74
75
|
kafka:
|
@@ -155,6 +156,7 @@ auth:
|
|
155
156
|
The `servers` key is required and should be in rdkafka format: without `kafka://` prefix, for example: `srv1:port1,srv2:port2,...`.
|
156
157
|
|
157
158
|
The `kafka_config` section may contain any [rdkafka option](https://github.com/confluentinc/librdkafka/blob/master/CONFIGURATION.md). Also, `kafka_options` may be redefined for each topic.
|
159
|
+
Please note that the `partition.assignment.strategy` option within kafka_options is not supported for topics; instead, use the global option partition_assignment_strategy.
|
158
160
|
|
159
161
|
### `consumer_groups` config section
|
160
162
|
|
@@ -25,7 +25,7 @@ class Sbmt::KafkaConsumer::Config < Anyway::Config
|
|
25
25
|
|
26
26
|
attr_config :client_id,
|
27
27
|
:pause_timeout, :pause_max_timeout, :pause_with_exponential_backoff,
|
28
|
-
:max_wait_time, :shutdown_timeout,
|
28
|
+
:max_wait_time, :shutdown_timeout, :partition_assignment_strategy,
|
29
29
|
concurrency: 4, auth: {}, kafka: {}, consumer_groups: {}, probes: {}, metrics: {},
|
30
30
|
deserializer_class: "::Sbmt::KafkaConsumer::Serialization::NullDeserializer",
|
31
31
|
monitor_class: "::Sbmt::KafkaConsumer::Instrumentation::TracingMonitor",
|
@@ -45,6 +45,7 @@ class Sbmt::KafkaConsumer::Config < Anyway::Config
|
|
45
45
|
pause_with_exponential_backoff: :boolean,
|
46
46
|
max_wait_time: :integer,
|
47
47
|
shutdown_timeout: :integer,
|
48
|
+
partition_assignment_strategy: :string,
|
48
49
|
concurrency: :integer
|
49
50
|
|
50
51
|
coerce_types kafka: coerce_to(Kafka)
|
@@ -54,7 +55,10 @@ class Sbmt::KafkaConsumer::Config < Anyway::Config
|
|
54
55
|
coerce_types consumer_groups: coerce_to_array_of(ConsumerGroup)
|
55
56
|
|
56
57
|
def to_kafka_options
|
57
|
-
|
58
|
+
{
|
59
|
+
"partition.assignment.strategy": partition_assignment_strategy
|
60
|
+
}.compact
|
61
|
+
.merge(kafka.to_kafka_options)
|
58
62
|
.merge(auth.to_kafka_options)
|
59
63
|
end
|
60
64
|
|
@@ -64,6 +68,9 @@ class Sbmt::KafkaConsumer::Config < Anyway::Config
|
|
64
68
|
consumer_groups.each do |cg|
|
65
69
|
raise_validation_error "consumer group #{cg.id} must have at least one topic defined" if cg.topics.blank?
|
66
70
|
cg.topics.each do |t|
|
71
|
+
if t.kafka_options.key?(:"partition.assignment.strategy")
|
72
|
+
raise_validation_error "Using the partition.assignment.strategy option for individual topics is not supported due to consuming issues. Use the global option `partition_assignment_strategy` instead"
|
73
|
+
end
|
67
74
|
raise_validation_error "topic #{cg.id}.topics.name[#{t.name}] contains invalid consumer class: no const #{t.consumer.klass} defined" unless t.consumer.klass.safe_constantize
|
68
75
|
raise_validation_error "topic #{cg.id}.topics.name[#{t.name}] contains invalid deserializer class: no const #{t.deserializer.klass} defined" unless t.deserializer&.klass&.safe_constantize
|
69
76
|
end
|
data/sbmt-kafka_consumer.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ["lib"]
|
33
33
|
|
34
|
-
spec.add_dependency "rails", ">=
|
34
|
+
spec.add_dependency "rails", ">= 6.0"
|
35
35
|
spec.add_dependency "zeitwerk", "~> 2.3"
|
36
36
|
spec.add_dependency "karafka", "~> 2.2", "< 2.4" # [Breaking] Drop the concept of consumer group mapping.
|
37
37
|
spec.add_dependency "yabeda", ">= 0.11"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sbmt-kafka_consumer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sbermarket Ruby-Platform Team
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: zeitwerk
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|