karafka-rdkafka 0.20.0.rc3-arm64-darwin

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.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.github/CODEOWNERS +3 -0
  3. data/.github/FUNDING.yml +1 -0
  4. data/.github/workflows/ci_linux_x86_64_gnu.yml +248 -0
  5. data/.github/workflows/ci_macos_arm64.yml +301 -0
  6. data/.github/workflows/push_linux_x86_64_gnu.yml +60 -0
  7. data/.github/workflows/push_macos_arm64.yml +50 -0
  8. data/.github/workflows/push_ruby.yml +37 -0
  9. data/.github/workflows/verify-action-pins.yml +16 -0
  10. data/.gitignore +15 -0
  11. data/.rspec +2 -0
  12. data/.ruby-gemset +1 -0
  13. data/.ruby-version +1 -0
  14. data/.yardopts +2 -0
  15. data/CHANGELOG.md +323 -0
  16. data/Gemfile +5 -0
  17. data/MIT-LICENSE +22 -0
  18. data/README.md +177 -0
  19. data/Rakefile +96 -0
  20. data/docker-compose.yml +25 -0
  21. data/ext/README.md +19 -0
  22. data/ext/Rakefile +131 -0
  23. data/ext/build_common.sh +361 -0
  24. data/ext/build_linux_x86_64_gnu.sh +306 -0
  25. data/ext/build_macos_arm64.sh +550 -0
  26. data/ext/librdkafka.dylib +0 -0
  27. data/karafka-rdkafka.gemspec +63 -0
  28. data/lib/rdkafka/abstract_handle.rb +116 -0
  29. data/lib/rdkafka/admin/acl_binding_result.rb +51 -0
  30. data/lib/rdkafka/admin/config_binding_result.rb +30 -0
  31. data/lib/rdkafka/admin/config_resource_binding_result.rb +18 -0
  32. data/lib/rdkafka/admin/create_acl_handle.rb +28 -0
  33. data/lib/rdkafka/admin/create_acl_report.rb +24 -0
  34. data/lib/rdkafka/admin/create_partitions_handle.rb +30 -0
  35. data/lib/rdkafka/admin/create_partitions_report.rb +6 -0
  36. data/lib/rdkafka/admin/create_topic_handle.rb +32 -0
  37. data/lib/rdkafka/admin/create_topic_report.rb +24 -0
  38. data/lib/rdkafka/admin/delete_acl_handle.rb +30 -0
  39. data/lib/rdkafka/admin/delete_acl_report.rb +23 -0
  40. data/lib/rdkafka/admin/delete_groups_handle.rb +28 -0
  41. data/lib/rdkafka/admin/delete_groups_report.rb +24 -0
  42. data/lib/rdkafka/admin/delete_topic_handle.rb +32 -0
  43. data/lib/rdkafka/admin/delete_topic_report.rb +24 -0
  44. data/lib/rdkafka/admin/describe_acl_handle.rb +30 -0
  45. data/lib/rdkafka/admin/describe_acl_report.rb +24 -0
  46. data/lib/rdkafka/admin/describe_configs_handle.rb +33 -0
  47. data/lib/rdkafka/admin/describe_configs_report.rb +48 -0
  48. data/lib/rdkafka/admin/incremental_alter_configs_handle.rb +33 -0
  49. data/lib/rdkafka/admin/incremental_alter_configs_report.rb +48 -0
  50. data/lib/rdkafka/admin.rb +832 -0
  51. data/lib/rdkafka/bindings.rb +582 -0
  52. data/lib/rdkafka/callbacks.rb +415 -0
  53. data/lib/rdkafka/config.rb +398 -0
  54. data/lib/rdkafka/consumer/headers.rb +79 -0
  55. data/lib/rdkafka/consumer/message.rb +86 -0
  56. data/lib/rdkafka/consumer/partition.rb +57 -0
  57. data/lib/rdkafka/consumer/topic_partition_list.rb +190 -0
  58. data/lib/rdkafka/consumer.rb +663 -0
  59. data/lib/rdkafka/error.rb +201 -0
  60. data/lib/rdkafka/helpers/oauth.rb +58 -0
  61. data/lib/rdkafka/helpers/time.rb +14 -0
  62. data/lib/rdkafka/metadata.rb +115 -0
  63. data/lib/rdkafka/native_kafka.rb +139 -0
  64. data/lib/rdkafka/producer/delivery_handle.rb +48 -0
  65. data/lib/rdkafka/producer/delivery_report.rb +45 -0
  66. data/lib/rdkafka/producer/partitions_count_cache.rb +216 -0
  67. data/lib/rdkafka/producer.rb +492 -0
  68. data/lib/rdkafka/version.rb +7 -0
  69. data/lib/rdkafka.rb +54 -0
  70. data/renovate.json +92 -0
  71. data/spec/rdkafka/abstract_handle_spec.rb +117 -0
  72. data/spec/rdkafka/admin/create_acl_handle_spec.rb +56 -0
  73. data/spec/rdkafka/admin/create_acl_report_spec.rb +18 -0
  74. data/spec/rdkafka/admin/create_topic_handle_spec.rb +54 -0
  75. data/spec/rdkafka/admin/create_topic_report_spec.rb +16 -0
  76. data/spec/rdkafka/admin/delete_acl_handle_spec.rb +85 -0
  77. data/spec/rdkafka/admin/delete_acl_report_spec.rb +72 -0
  78. data/spec/rdkafka/admin/delete_topic_handle_spec.rb +54 -0
  79. data/spec/rdkafka/admin/delete_topic_report_spec.rb +16 -0
  80. data/spec/rdkafka/admin/describe_acl_handle_spec.rb +85 -0
  81. data/spec/rdkafka/admin/describe_acl_report_spec.rb +73 -0
  82. data/spec/rdkafka/admin_spec.rb +769 -0
  83. data/spec/rdkafka/bindings_spec.rb +222 -0
  84. data/spec/rdkafka/callbacks_spec.rb +20 -0
  85. data/spec/rdkafka/config_spec.rb +258 -0
  86. data/spec/rdkafka/consumer/headers_spec.rb +73 -0
  87. data/spec/rdkafka/consumer/message_spec.rb +139 -0
  88. data/spec/rdkafka/consumer/partition_spec.rb +57 -0
  89. data/spec/rdkafka/consumer/topic_partition_list_spec.rb +248 -0
  90. data/spec/rdkafka/consumer_spec.rb +1299 -0
  91. data/spec/rdkafka/error_spec.rb +95 -0
  92. data/spec/rdkafka/metadata_spec.rb +79 -0
  93. data/spec/rdkafka/native_kafka_spec.rb +130 -0
  94. data/spec/rdkafka/producer/delivery_handle_spec.rb +60 -0
  95. data/spec/rdkafka/producer/delivery_report_spec.rb +25 -0
  96. data/spec/rdkafka/producer/partitions_count_cache_spec.rb +359 -0
  97. data/spec/rdkafka/producer/partitions_count_spec.rb +359 -0
  98. data/spec/rdkafka/producer_spec.rb +1234 -0
  99. data/spec/spec_helper.rb +181 -0
  100. metadata +273 -0
@@ -0,0 +1,181 @@
1
+ # frozen_string_literal: true
2
+
3
+ unless ENV["CI"] == "true"
4
+ require "simplecov"
5
+ SimpleCov.start do
6
+ add_filter "/spec/"
7
+ end
8
+ end
9
+
10
+ require "pry"
11
+ require "rspec"
12
+ require "rdkafka"
13
+ require "timeout"
14
+ require "securerandom"
15
+
16
+ def rdkafka_base_config
17
+ {
18
+ :"api.version.request" => false,
19
+ :"broker.version.fallback" => "1.0",
20
+ :"bootstrap.servers" => "127.0.0.1:9092",
21
+ # Display statistics and refresh often just to cover those in specs
22
+ :'statistics.interval.ms' => 1_000,
23
+ :'topic.metadata.refresh.interval.ms' => 1_000
24
+ }
25
+ end
26
+
27
+ def rdkafka_config(config_overrides={})
28
+ # Generate the base config
29
+ config = rdkafka_base_config
30
+ # Merge overrides
31
+ config.merge!(config_overrides)
32
+ # Return it
33
+ Rdkafka::Config.new(config)
34
+ end
35
+
36
+ def rdkafka_consumer_config(config_overrides={})
37
+ # Generate the base config
38
+ config = rdkafka_base_config
39
+ # Add consumer specific fields to it
40
+ config[:"auto.offset.reset"] = "earliest"
41
+ config[:"enable.partition.eof"] = false
42
+ config[:"group.id"] = "ruby-test-#{SecureRandom.uuid}"
43
+ # Enable debug mode if required
44
+ if ENV["DEBUG_CONSUMER"]
45
+ config[:debug] = "cgrp,topic,fetch"
46
+ end
47
+ # Merge overrides
48
+ config.merge!(config_overrides)
49
+ # Return it
50
+ Rdkafka::Config.new(config)
51
+ end
52
+
53
+ def rdkafka_producer_config(config_overrides={})
54
+ # Generate the base config
55
+ config = rdkafka_base_config
56
+ # Enable debug mode if required
57
+ if ENV["DEBUG_PRODUCER"]
58
+ config[:debug] = "broker,topic,msg"
59
+ end
60
+ # Merge overrides
61
+ config.merge!(config_overrides)
62
+ # Return it
63
+ Rdkafka::Config.new(config)
64
+ end
65
+
66
+ def new_native_client
67
+ config = rdkafka_consumer_config
68
+ config.send(:native_kafka, config.send(:native_config), :rd_kafka_producer)
69
+ end
70
+
71
+ def new_native_topic(topic_name="topic_name", native_client: )
72
+ Rdkafka::Bindings.rd_kafka_topic_new(
73
+ native_client,
74
+ topic_name,
75
+ nil
76
+ )
77
+ end
78
+
79
+ def wait_for_message(topic:, delivery_report:, timeout_in_seconds: 30, consumer: nil)
80
+ new_consumer = consumer.nil?
81
+ consumer ||= rdkafka_consumer_config.consumer
82
+ consumer.subscribe(topic)
83
+ timeout = Time.now.to_i + timeout_in_seconds
84
+ loop do
85
+ if timeout <= Time.now.to_i
86
+ raise "Timeout of #{timeout_in_seconds} seconds reached in wait_for_message"
87
+ end
88
+ message = consumer.poll(100)
89
+ if message &&
90
+ message.partition == delivery_report.partition &&
91
+ message.offset == delivery_report.offset
92
+ return message
93
+ end
94
+ end
95
+ ensure
96
+ consumer.close if new_consumer
97
+ end
98
+
99
+ def wait_for_assignment(consumer)
100
+ 10.times do
101
+ break if !consumer.assignment.empty?
102
+ sleep 1
103
+ end
104
+ end
105
+
106
+ def wait_for_unassignment(consumer)
107
+ 10.times do
108
+ break if consumer.assignment.empty?
109
+ sleep 1
110
+ end
111
+ end
112
+
113
+ def notify_listener(listener, &block)
114
+ # 1. subscribe and poll
115
+ consumer.subscribe("consume_test_topic")
116
+ wait_for_assignment(consumer)
117
+ consumer.poll(100)
118
+
119
+ block.call if block
120
+
121
+ # 2. unsubscribe
122
+ consumer.unsubscribe
123
+ wait_for_unassignment(consumer)
124
+ consumer.close
125
+ end
126
+
127
+ RSpec.configure do |config|
128
+ config.filter_run focus: true
129
+ config.run_all_when_everything_filtered = true
130
+
131
+ config.before(:each) do
132
+ Rdkafka::Config.statistics_callback = nil
133
+ # We need to clear it so state does not leak between specs
134
+ Rdkafka::Producer.partitions_count_cache.to_h.clear
135
+ end
136
+
137
+ config.before(:suite) do
138
+ admin = rdkafka_config.admin
139
+ {
140
+ consume_test_topic: 3,
141
+ empty_test_topic: 3,
142
+ load_test_topic: 3,
143
+ produce_test_topic: 3,
144
+ rake_test_topic: 3,
145
+ watermarks_test_topic: 3,
146
+ partitioner_test_topic: 25,
147
+ example_topic: 1
148
+ }.each do |topic, partitions|
149
+ create_topic_handle = admin.create_topic(topic.to_s, partitions, 1)
150
+ begin
151
+ create_topic_handle.wait(max_wait_timeout: 1.0)
152
+ rescue Rdkafka::RdkafkaError => ex
153
+ raise unless ex.message.match?(/topic_already_exists/)
154
+ end
155
+ end
156
+ admin.close
157
+ end
158
+
159
+ config.around(:each) do |example|
160
+ # Timeout specs after a minute. If they take longer
161
+ # they are probably stuck
162
+ Timeout::timeout(60) do
163
+ example.run
164
+ end
165
+ end
166
+ end
167
+
168
+ class RdKafkaTestConsumer
169
+ def self.with
170
+ consumer = Rdkafka::Bindings.rd_kafka_new(
171
+ :rd_kafka_consumer,
172
+ nil,
173
+ nil,
174
+ 0
175
+ )
176
+ yield consumer
177
+ ensure
178
+ Rdkafka::Bindings.rd_kafka_consumer_close(consumer)
179
+ Rdkafka::Bindings.rd_kafka_destroy(consumer)
180
+ end
181
+ end
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: karafka-rdkafka
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.20.0.rc3
5
+ platform: arm64-darwin
6
+ authors:
7
+ - Thijs Cadier
8
+ - Maciej Mensfeld
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.15'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mini_portile2
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ostruct
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">"
74
+ - !ruby/object:Gem::Version
75
+ version: '12'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">"
81
+ - !ruby/object:Gem::Version
82
+ version: '12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.5'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.5'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: Modern Kafka client library for Ruby based on librdkafka
140
+ email:
141
+ - contact@karafka.io
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".github/CODEOWNERS"
147
+ - ".github/FUNDING.yml"
148
+ - ".github/workflows/ci_linux_x86_64_gnu.yml"
149
+ - ".github/workflows/ci_macos_arm64.yml"
150
+ - ".github/workflows/push_linux_x86_64_gnu.yml"
151
+ - ".github/workflows/push_macos_arm64.yml"
152
+ - ".github/workflows/push_ruby.yml"
153
+ - ".github/workflows/verify-action-pins.yml"
154
+ - ".gitignore"
155
+ - ".rspec"
156
+ - ".ruby-gemset"
157
+ - ".ruby-version"
158
+ - ".yardopts"
159
+ - CHANGELOG.md
160
+ - Gemfile
161
+ - MIT-LICENSE
162
+ - README.md
163
+ - Rakefile
164
+ - docker-compose.yml
165
+ - ext/README.md
166
+ - ext/Rakefile
167
+ - ext/build_common.sh
168
+ - ext/build_linux_x86_64_gnu.sh
169
+ - ext/build_macos_arm64.sh
170
+ - ext/librdkafka.dylib
171
+ - karafka-rdkafka.gemspec
172
+ - lib/rdkafka.rb
173
+ - lib/rdkafka/abstract_handle.rb
174
+ - lib/rdkafka/admin.rb
175
+ - lib/rdkafka/admin/acl_binding_result.rb
176
+ - lib/rdkafka/admin/config_binding_result.rb
177
+ - lib/rdkafka/admin/config_resource_binding_result.rb
178
+ - lib/rdkafka/admin/create_acl_handle.rb
179
+ - lib/rdkafka/admin/create_acl_report.rb
180
+ - lib/rdkafka/admin/create_partitions_handle.rb
181
+ - lib/rdkafka/admin/create_partitions_report.rb
182
+ - lib/rdkafka/admin/create_topic_handle.rb
183
+ - lib/rdkafka/admin/create_topic_report.rb
184
+ - lib/rdkafka/admin/delete_acl_handle.rb
185
+ - lib/rdkafka/admin/delete_acl_report.rb
186
+ - lib/rdkafka/admin/delete_groups_handle.rb
187
+ - lib/rdkafka/admin/delete_groups_report.rb
188
+ - lib/rdkafka/admin/delete_topic_handle.rb
189
+ - lib/rdkafka/admin/delete_topic_report.rb
190
+ - lib/rdkafka/admin/describe_acl_handle.rb
191
+ - lib/rdkafka/admin/describe_acl_report.rb
192
+ - lib/rdkafka/admin/describe_configs_handle.rb
193
+ - lib/rdkafka/admin/describe_configs_report.rb
194
+ - lib/rdkafka/admin/incremental_alter_configs_handle.rb
195
+ - lib/rdkafka/admin/incremental_alter_configs_report.rb
196
+ - lib/rdkafka/bindings.rb
197
+ - lib/rdkafka/callbacks.rb
198
+ - lib/rdkafka/config.rb
199
+ - lib/rdkafka/consumer.rb
200
+ - lib/rdkafka/consumer/headers.rb
201
+ - lib/rdkafka/consumer/message.rb
202
+ - lib/rdkafka/consumer/partition.rb
203
+ - lib/rdkafka/consumer/topic_partition_list.rb
204
+ - lib/rdkafka/error.rb
205
+ - lib/rdkafka/helpers/oauth.rb
206
+ - lib/rdkafka/helpers/time.rb
207
+ - lib/rdkafka/metadata.rb
208
+ - lib/rdkafka/native_kafka.rb
209
+ - lib/rdkafka/producer.rb
210
+ - lib/rdkafka/producer/delivery_handle.rb
211
+ - lib/rdkafka/producer/delivery_report.rb
212
+ - lib/rdkafka/producer/partitions_count_cache.rb
213
+ - lib/rdkafka/version.rb
214
+ - renovate.json
215
+ - spec/rdkafka/abstract_handle_spec.rb
216
+ - spec/rdkafka/admin/create_acl_handle_spec.rb
217
+ - spec/rdkafka/admin/create_acl_report_spec.rb
218
+ - spec/rdkafka/admin/create_topic_handle_spec.rb
219
+ - spec/rdkafka/admin/create_topic_report_spec.rb
220
+ - spec/rdkafka/admin/delete_acl_handle_spec.rb
221
+ - spec/rdkafka/admin/delete_acl_report_spec.rb
222
+ - spec/rdkafka/admin/delete_topic_handle_spec.rb
223
+ - spec/rdkafka/admin/delete_topic_report_spec.rb
224
+ - spec/rdkafka/admin/describe_acl_handle_spec.rb
225
+ - spec/rdkafka/admin/describe_acl_report_spec.rb
226
+ - spec/rdkafka/admin_spec.rb
227
+ - spec/rdkafka/bindings_spec.rb
228
+ - spec/rdkafka/callbacks_spec.rb
229
+ - spec/rdkafka/config_spec.rb
230
+ - spec/rdkafka/consumer/headers_spec.rb
231
+ - spec/rdkafka/consumer/message_spec.rb
232
+ - spec/rdkafka/consumer/partition_spec.rb
233
+ - spec/rdkafka/consumer/topic_partition_list_spec.rb
234
+ - spec/rdkafka/consumer_spec.rb
235
+ - spec/rdkafka/error_spec.rb
236
+ - spec/rdkafka/metadata_spec.rb
237
+ - spec/rdkafka/native_kafka_spec.rb
238
+ - spec/rdkafka/producer/delivery_handle_spec.rb
239
+ - spec/rdkafka/producer/delivery_report_spec.rb
240
+ - spec/rdkafka/producer/partitions_count_cache_spec.rb
241
+ - spec/rdkafka/producer/partitions_count_spec.rb
242
+ - spec/rdkafka/producer_spec.rb
243
+ - spec/spec_helper.rb
244
+ licenses:
245
+ - MIT
246
+ metadata:
247
+ funding_uri: https://karafka.io/#become-pro
248
+ homepage_uri: https://karafka.io
249
+ changelog_uri: https://karafka.io/docs/Changelog-Karafka-Rdkafka/
250
+ bug_tracker_uri: https://github.com/karafka/karafka-rdkafka/issues
251
+ source_code_uri: https://github.com/karafka/karafka-rdkafka
252
+ documentation_uri: https://karafka.io/docs
253
+ rubygems_mfa_required: 'true'
254
+ rdoc_options: []
255
+ require_paths:
256
+ - lib
257
+ required_ruby_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '3.1'
262
+ required_rubygems_version: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - ">="
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ requirements: []
268
+ rubygems_version: 3.6.7
269
+ specification_version: 4
270
+ summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
271
+ It wraps the production-ready C client using the ffi gem and targets Kafka 1.0+
272
+ and Ruby 2.7+.
273
+ test_files: []