karafka-rdkafka 0.19.3 → 0.19.5
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/.github/workflows/ci.yml +3 -3
- data/.github/workflows/push.yml +37 -0
- data/CHANGELOG.md +7 -0
- data/Rakefile +0 -2
- data/karafka-rdkafka.gemspec +1 -6
- data/lib/rdkafka/producer.rb +7 -0
- data/lib/rdkafka/version.rb +1 -1
- data/spec/rdkafka/producer_spec.rb +61 -0
- metadata +5 -32
- checksums.yaml.gz.sig +0 -0
- data/certs/cert.pem +0 -26
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e84a931a800cf4fb0e62f0d15de7f53e5c5845e8edfcd240f1939ec445050bdb
|
4
|
+
data.tar.gz: f12b221a26faa281f4c9c90b2a55ac8ebc623cf1aa882b0ce8e7ae274aa6a122
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 225e690444b46ea2469f0a92beb7e27cd105c49b1649c022163996fb994ed67c9adac95573bfa96f23134732a3e4d41f5dbffc970bdffd699de664b4b1b89e73
|
7
|
+
data.tar.gz: 1fcb61fd0d7ca98537b59d15235fd84ab202e020828d36cab07b9ecf837eb845fafa7a6624eb760902c5b50050134a30361f16429f2442f43491f76c57bb4340
|
data/.github/workflows/ci.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
name:
|
1
|
+
name: CI
|
2
2
|
|
3
3
|
concurrency:
|
4
4
|
group: ${{ github.workflow }}-${{ github.ref }}
|
@@ -51,7 +51,7 @@ jobs:
|
|
51
51
|
docker compose up -d || (sleep 5 && docker compose up -d)
|
52
52
|
|
53
53
|
- name: Set up Ruby
|
54
|
-
uses: ruby/setup-ruby@
|
54
|
+
uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
|
55
55
|
with:
|
56
56
|
ruby-version: ${{matrix.ruby}}
|
57
57
|
bundler-cache: true
|
@@ -86,7 +86,7 @@ jobs:
|
|
86
86
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
87
87
|
|
88
88
|
- name: Set up Ruby
|
89
|
-
uses: ruby/setup-ruby@
|
89
|
+
uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
|
90
90
|
with:
|
91
91
|
ruby-version: ${{matrix.ruby}}
|
92
92
|
bundler-cache: false
|
@@ -0,0 +1,37 @@
|
|
1
|
+
name: Push Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- v*
|
7
|
+
|
8
|
+
permissions:
|
9
|
+
contents: read
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
push:
|
13
|
+
if: github.repository_owner == 'karafka'
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
environment: deployment
|
16
|
+
|
17
|
+
permissions:
|
18
|
+
contents: write
|
19
|
+
id-token: write
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
23
|
+
with:
|
24
|
+
fetch-depth: 0
|
25
|
+
|
26
|
+
- name: Set up Ruby
|
27
|
+
uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
|
28
|
+
with:
|
29
|
+
bundler-cache: false
|
30
|
+
|
31
|
+
- name: Build rdkafka-ruby
|
32
|
+
run: |
|
33
|
+
set -e
|
34
|
+
bundle install --jobs 4 --retry 3
|
35
|
+
cd ext && bundle exec rake
|
36
|
+
|
37
|
+
- uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Rdkafka Changelog
|
2
2
|
|
3
|
+
## 0.19.5 (2025-05-30)
|
4
|
+
- [Enhancement] Allow for producing to non-existing topics with `key` and `partition_key` present.
|
5
|
+
|
6
|
+
## 0.19.4 (2025-05-23)
|
7
|
+
- [Change] Move to trusted-publishers and remove signing since no longer needed.
|
8
|
+
|
3
9
|
## 0.19.3 (2025-05-23)
|
4
10
|
- [Enhancement] Include broker message in the error full message if provided.
|
5
11
|
|
@@ -8,6 +14,7 @@
|
|
8
14
|
- [Enhancement] Roll out experimental jruby support.
|
9
15
|
- [Fix] Fix issue where post-closed producer C topics refs would not be cleaned.
|
10
16
|
- [Fix] Fiber causes Segmentation Fault.
|
17
|
+
- [Change] Move to trusted-publishers and remove signing since no longer needed.
|
11
18
|
|
12
19
|
## 0.19.1 (2025-04-07)
|
13
20
|
- [Enhancement] Support producing and consuming of headers with mulitple values (KIP-82).
|
data/Rakefile
CHANGED
data/karafka-rdkafka.gemspec
CHANGED
@@ -17,11 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.version = Rdkafka::VERSION
|
18
18
|
gem.required_ruby_version = '>= 3.1'
|
19
19
|
gem.extensions = %w(ext/Rakefile)
|
20
|
-
gem.cert_chain = %w[certs/cert.pem]
|
21
|
-
|
22
|
-
if $PROGRAM_NAME.end_with?('gem')
|
23
|
-
gem.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
|
24
|
-
end
|
25
20
|
|
26
21
|
gem.add_dependency 'ffi', '~> 1.15'
|
27
22
|
gem.add_dependency 'mini_portile2', '~> 2.6'
|
@@ -37,7 +32,7 @@ Gem::Specification.new do |gem|
|
|
37
32
|
gem.metadata = {
|
38
33
|
'funding_uri' => 'https://karafka.io/#become-pro',
|
39
34
|
'homepage_uri' => 'https://karafka.io',
|
40
|
-
'changelog_uri' => 'https://
|
35
|
+
'changelog_uri' => 'https://karafka.io/docs/Changelog-Karafka-Rdkafka/',
|
41
36
|
'bug_tracker_uri' => 'https://github.com/karafka/karafka-rdkafka/issues',
|
42
37
|
'source_code_uri' => 'https://github.com/karafka/karafka-rdkafka',
|
43
38
|
'documentation_uri' => 'https://karafka.io/docs',
|
data/lib/rdkafka/producer.rb
CHANGED
@@ -301,6 +301,13 @@ module Rdkafka
|
|
301
301
|
|
302
302
|
topic_metadata ? topic_metadata[:partition_count] : -1
|
303
303
|
end
|
304
|
+
rescue Rdkafka::RdkafkaError => e
|
305
|
+
# If the topic does not exist, it will be created or if not allowed another error will be
|
306
|
+
# raised. We here return -1 so this can happen without early error happening on metadata
|
307
|
+
# discovery.
|
308
|
+
return -1 if e.code == :unknown_topic_or_part
|
309
|
+
|
310
|
+
raise(e)
|
304
311
|
end
|
305
312
|
|
306
313
|
# Produces a message to a Kafka topic. The message is added to rdkafka's queue, call {DeliveryHandle#wait wait} on the returned delivery handle to make sure it is delivered.
|
data/lib/rdkafka/version.rb
CHANGED
@@ -364,6 +364,48 @@ describe Rdkafka::Producer do
|
|
364
364
|
expect(message.key).to eq "key utf8"
|
365
365
|
end
|
366
366
|
|
367
|
+
it "should produce a message to a non-existing topic with key and partition key" do
|
368
|
+
new_topic = "it-#{SecureRandom.uuid}"
|
369
|
+
|
370
|
+
handle = producer.produce(
|
371
|
+
# Needs to be a new topic each time
|
372
|
+
topic: new_topic,
|
373
|
+
payload: "payload",
|
374
|
+
key: "key",
|
375
|
+
partition_key: "partition_key",
|
376
|
+
label: "label"
|
377
|
+
)
|
378
|
+
|
379
|
+
# Should be pending at first
|
380
|
+
expect(handle.pending?).to be true
|
381
|
+
expect(handle.label).to eq "label"
|
382
|
+
|
383
|
+
# Check delivery handle and report
|
384
|
+
report = handle.wait(max_wait_timeout: 5)
|
385
|
+
expect(handle.pending?).to be false
|
386
|
+
expect(report).not_to be_nil
|
387
|
+
expect(report.partition).to eq 0
|
388
|
+
expect(report.offset).to be >= 0
|
389
|
+
expect(report.label).to eq "label"
|
390
|
+
|
391
|
+
# Flush and close producer
|
392
|
+
producer.flush
|
393
|
+
producer.close
|
394
|
+
|
395
|
+
# Consume message and verify its content
|
396
|
+
message = wait_for_message(
|
397
|
+
topic: new_topic,
|
398
|
+
delivery_report: report,
|
399
|
+
consumer: consumer
|
400
|
+
)
|
401
|
+
expect(message.partition).to eq 0
|
402
|
+
expect(message.payload).to eq "payload"
|
403
|
+
expect(message.key).to eq "key"
|
404
|
+
# Since api.version.request is on by default we will get
|
405
|
+
# the message creation timestamp if it's not set.
|
406
|
+
expect(message.timestamp).to be_within(10).of(Time.now)
|
407
|
+
end
|
408
|
+
|
367
409
|
context "timestamp" do
|
368
410
|
it "should raise a type error if not nil, integer or time" do
|
369
411
|
expect {
|
@@ -637,6 +679,25 @@ describe Rdkafka::Producer do
|
|
637
679
|
end
|
638
680
|
end
|
639
681
|
|
682
|
+
context "when topic does not exist and allow.auto.create.topics is false" do
|
683
|
+
let(:producer) do
|
684
|
+
rdkafka_producer_config(
|
685
|
+
"bootstrap.servers": "localhost:9092",
|
686
|
+
"message.timeout.ms": 100,
|
687
|
+
"allow.auto.create.topics": false
|
688
|
+
).producer
|
689
|
+
end
|
690
|
+
|
691
|
+
it "should contain the error in the response when not deliverable" do
|
692
|
+
handler = producer.produce(topic: "it-#{SecureRandom.uuid}", payload: nil, label: 'na')
|
693
|
+
# Wait for the async callbacks and delivery registry to update
|
694
|
+
sleep(2)
|
695
|
+
expect(handler.create_result.error).to be_a(Rdkafka::RdkafkaError)
|
696
|
+
expect(handler.create_result.error.code).to eq(:msg_timed_out)
|
697
|
+
expect(handler.create_result.label).to eq('na')
|
698
|
+
end
|
699
|
+
end
|
700
|
+
|
640
701
|
describe '#partition_count' do
|
641
702
|
it { expect(producer.partition_count('example_topic')).to eq(1) }
|
642
703
|
|
metadata
CHANGED
@@ -1,40 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: karafka-rdkafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.19.
|
4
|
+
version: 0.19.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
8
8
|
- Maciej Mensfeld
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
- |
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
14
|
-
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
15
|
-
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
16
|
-
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
17
|
-
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
18
|
-
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
19
|
-
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
20
|
-
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
21
|
-
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
22
|
-
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
23
|
-
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
24
|
-
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
25
|
-
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
26
|
-
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
27
|
-
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
28
|
-
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
29
|
-
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
30
|
-
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
31
|
-
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
32
|
-
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
33
|
-
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
34
|
-
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
35
|
-
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
36
|
-
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
37
|
-
-----END CERTIFICATE-----
|
10
|
+
cert_chain: []
|
38
11
|
date: 1980-01-02 00:00:00.000000000 Z
|
39
12
|
dependencies:
|
40
13
|
- !ruby/object:Gem::Dependency
|
@@ -174,6 +147,7 @@ files:
|
|
174
147
|
- ".github/CODEOWNERS"
|
175
148
|
- ".github/FUNDING.yml"
|
176
149
|
- ".github/workflows/ci.yml"
|
150
|
+
- ".github/workflows/push.yml"
|
177
151
|
- ".github/workflows/verify-action-pins.yml"
|
178
152
|
- ".gitignore"
|
179
153
|
- ".rspec"
|
@@ -186,7 +160,6 @@ files:
|
|
186
160
|
- MIT-LICENSE
|
187
161
|
- README.md
|
188
162
|
- Rakefile
|
189
|
-
- certs/cert.pem
|
190
163
|
- dist/librdkafka-2.8.0.tar.gz
|
191
164
|
- dist/patches/rdkafka_global_init.patch
|
192
165
|
- docker-compose.yml
|
@@ -270,7 +243,7 @@ licenses:
|
|
270
243
|
metadata:
|
271
244
|
funding_uri: https://karafka.io/#become-pro
|
272
245
|
homepage_uri: https://karafka.io
|
273
|
-
changelog_uri: https://
|
246
|
+
changelog_uri: https://karafka.io/docs/Changelog-Karafka-Rdkafka/
|
274
247
|
bug_tracker_uri: https://github.com/karafka/karafka-rdkafka/issues
|
275
248
|
source_code_uri: https://github.com/karafka/karafka-rdkafka
|
276
249
|
documentation_uri: https://karafka.io/docs
|
@@ -289,7 +262,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
262
|
- !ruby/object:Gem::Version
|
290
263
|
version: '0'
|
291
264
|
requirements: []
|
292
|
-
rubygems_version: 3.6.
|
265
|
+
rubygems_version: 3.6.7
|
293
266
|
specification_version: 4
|
294
267
|
summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
|
295
268
|
It wraps the production-ready C client using the ffi gem and targets Kafka 1.0+
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data/certs/cert.pem
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MRAwDgYDVQQDDAdjb250
|
3
|
-
YWN0MRcwFQYKCZImiZPyLGQBGRYHa2FyYWZrYTESMBAGCgmSJomT8ixkARkWAmlv
|
4
|
-
MB4XDTI0MDgyMzEwMTkyMFoXDTQ5MDgxNzEwMTkyMFowPzEQMA4GA1UEAwwHY29u
|
5
|
-
dGFjdDEXMBUGCgmSJomT8ixkARkWB2thcmFma2ExEjAQBgoJkiaJk/IsZAEZFgJp
|
6
|
-
bzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjLhLjQqUlNayxkXnO+
|
7
|
-
PsmCDs/KFIzhrsYMfLZRZNaWmzV3ujljMOdDjd4snM2X06C41iVdQPWjpe3j8vVe
|
8
|
-
ZXEWR/twSbOP6Eeg8WVH2wCOo0x5i7yhVn4UBLH4JpfEMCbemVcWQ9ry9OMg4WpH
|
9
|
-
Uu4dRwxFV7hzCz3p0QfNLRI4miAxnGWcnlD98IJRjBAksTuR1Llj0vbOrDGsL9ZT
|
10
|
-
JeXP2gdRLd8SqzAFJEWrbeTBCBU7gfSh3oMg5SVDLjaqf7Kz5wC/8bDZydzanOxB
|
11
|
-
T6CDXPsCnllmvTNx2ei2T5rGYJOzJeNTmJLLK6hJWUlAvaQSvCwZRvFJ0tVGLEoS
|
12
|
-
flqSr6uGyyl1eMUsNmsH4BqPEYcAV6P2PKTv2vUR8AP0raDvZ3xL1TKvfRb8xRpo
|
13
|
-
vPopCGlY5XBWEc6QERHfVLTIVsjnls2/Ujj4h8/TSfqqYnaHKefIMLbuD/tquMjD
|
14
|
-
iWQsW2qStBV0T+U7FijKxVfrfqZP7GxQmDAc9o1iiyAa3QIDAQABo3cwdTAJBgNV
|
15
|
-
HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU3O4dTXmvE7YpAkszGzR9DdL9
|
16
|
-
sbEwHQYDVR0RBBYwFIESY29udGFjdEBrYXJhZmthLmlvMB0GA1UdEgQWMBSBEmNv
|
17
|
-
bnRhY3RAa2FyYWZrYS5pbzANBgkqhkiG9w0BAQsFAAOCAYEAVKTfoLXn7mqdSxIR
|
18
|
-
eqxcR6Huudg1jes81s1+X0uiRTR3hxxKZ3Y82cPsee9zYWyBrN8TA4KA0WILTru7
|
19
|
-
Ygxvzha0SRPsSiaKLmgOJ+61ebI4+bOORzIJLpD6GxCxu1r7MI4+0r1u1xe0EWi8
|
20
|
-
agkVo1k4Vi8cKMLm6Gl9b3wG9zQBw6fcgKwmpjKiNnOLP+OytzUANrIUJjoq6oal
|
21
|
-
TC+f/Uc0TLaRqUaW/bejxzDWWHoM3SU6aoLPuerglzp9zZVzihXwx3jPLUVKDFpF
|
22
|
-
Rl2lcBDxlpYGueGo0/oNzGJAAy6js8jhtHC9+19PD53vk7wHtFTZ/0ugDQYnwQ+x
|
23
|
-
oml2fAAuVWpTBCgOVFe6XCQpMKopzoxQ1PjKztW2KYxgJdIBX87SnL3aWuBQmhRd
|
24
|
-
i9zWxov0mr44TWegTVeypcWGd/0nxu1+QHVNHJrpqlPBRvwQsUm7fwmRInGpcaB8
|
25
|
-
ap8wNYvryYzrzvzUxIVFBVM5PacgkFqRmolCa8I7tdKQN+R1
|
26
|
-
-----END CERTIFICATE-----
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
Binary file
|