rdkafka 0.22.0.beta1-x86_64-linux-gnu

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 (102) 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 +249 -0
  5. data/.github/workflows/ci_linux_x86_64_musl.yml +205 -0
  6. data/.github/workflows/ci_macos_arm64.yml +306 -0
  7. data/.github/workflows/push_linux_x86_64_gnu.yml +64 -0
  8. data/.github/workflows/push_linux_x86_64_musl.yml +77 -0
  9. data/.github/workflows/push_macos_arm64.yml +54 -0
  10. data/.github/workflows/push_ruby.yml +37 -0
  11. data/.github/workflows/verify-action-pins.yml +16 -0
  12. data/.gitignore +14 -0
  13. data/.rspec +2 -0
  14. data/.ruby-gemset +1 -0
  15. data/.ruby-version +1 -0
  16. data/.yardopts +2 -0
  17. data/CHANGELOG.md +247 -0
  18. data/Gemfile +5 -0
  19. data/MIT-LICENSE +22 -0
  20. data/README.md +178 -0
  21. data/Rakefile +96 -0
  22. data/docker-compose.yml +25 -0
  23. data/ext/README.md +19 -0
  24. data/ext/Rakefile +131 -0
  25. data/ext/build_common.sh +361 -0
  26. data/ext/build_linux_x86_64_gnu.sh +306 -0
  27. data/ext/build_linux_x86_64_musl.sh +763 -0
  28. data/ext/build_macos_arm64.sh +550 -0
  29. data/ext/librdkafka.so +0 -0
  30. data/lib/rdkafka/abstract_handle.rb +116 -0
  31. data/lib/rdkafka/admin/acl_binding_result.rb +51 -0
  32. data/lib/rdkafka/admin/config_binding_result.rb +30 -0
  33. data/lib/rdkafka/admin/config_resource_binding_result.rb +18 -0
  34. data/lib/rdkafka/admin/create_acl_handle.rb +28 -0
  35. data/lib/rdkafka/admin/create_acl_report.rb +24 -0
  36. data/lib/rdkafka/admin/create_partitions_handle.rb +27 -0
  37. data/lib/rdkafka/admin/create_partitions_report.rb +6 -0
  38. data/lib/rdkafka/admin/create_topic_handle.rb +29 -0
  39. data/lib/rdkafka/admin/create_topic_report.rb +24 -0
  40. data/lib/rdkafka/admin/delete_acl_handle.rb +30 -0
  41. data/lib/rdkafka/admin/delete_acl_report.rb +23 -0
  42. data/lib/rdkafka/admin/delete_groups_handle.rb +28 -0
  43. data/lib/rdkafka/admin/delete_groups_report.rb +24 -0
  44. data/lib/rdkafka/admin/delete_topic_handle.rb +29 -0
  45. data/lib/rdkafka/admin/delete_topic_report.rb +24 -0
  46. data/lib/rdkafka/admin/describe_acl_handle.rb +30 -0
  47. data/lib/rdkafka/admin/describe_acl_report.rb +24 -0
  48. data/lib/rdkafka/admin/describe_configs_handle.rb +33 -0
  49. data/lib/rdkafka/admin/describe_configs_report.rb +54 -0
  50. data/lib/rdkafka/admin/incremental_alter_configs_handle.rb +33 -0
  51. data/lib/rdkafka/admin/incremental_alter_configs_report.rb +54 -0
  52. data/lib/rdkafka/admin.rb +833 -0
  53. data/lib/rdkafka/bindings.rb +566 -0
  54. data/lib/rdkafka/callbacks.rb +415 -0
  55. data/lib/rdkafka/config.rb +398 -0
  56. data/lib/rdkafka/consumer/headers.rb +79 -0
  57. data/lib/rdkafka/consumer/message.rb +86 -0
  58. data/lib/rdkafka/consumer/partition.rb +51 -0
  59. data/lib/rdkafka/consumer/topic_partition_list.rb +169 -0
  60. data/lib/rdkafka/consumer.rb +653 -0
  61. data/lib/rdkafka/error.rb +101 -0
  62. data/lib/rdkafka/helpers/oauth.rb +58 -0
  63. data/lib/rdkafka/helpers/time.rb +14 -0
  64. data/lib/rdkafka/metadata.rb +115 -0
  65. data/lib/rdkafka/native_kafka.rb +139 -0
  66. data/lib/rdkafka/producer/delivery_handle.rb +40 -0
  67. data/lib/rdkafka/producer/delivery_report.rb +46 -0
  68. data/lib/rdkafka/producer/partitions_count_cache.rb +216 -0
  69. data/lib/rdkafka/producer.rb +430 -0
  70. data/lib/rdkafka/version.rb +7 -0
  71. data/lib/rdkafka.rb +54 -0
  72. data/rdkafka.gemspec +65 -0
  73. data/renovate.json +92 -0
  74. data/spec/rdkafka/abstract_handle_spec.rb +117 -0
  75. data/spec/rdkafka/admin/create_acl_handle_spec.rb +56 -0
  76. data/spec/rdkafka/admin/create_acl_report_spec.rb +18 -0
  77. data/spec/rdkafka/admin/create_topic_handle_spec.rb +52 -0
  78. data/spec/rdkafka/admin/create_topic_report_spec.rb +16 -0
  79. data/spec/rdkafka/admin/delete_acl_handle_spec.rb +85 -0
  80. data/spec/rdkafka/admin/delete_acl_report_spec.rb +72 -0
  81. data/spec/rdkafka/admin/delete_topic_handle_spec.rb +52 -0
  82. data/spec/rdkafka/admin/delete_topic_report_spec.rb +16 -0
  83. data/spec/rdkafka/admin/describe_acl_handle_spec.rb +85 -0
  84. data/spec/rdkafka/admin/describe_acl_report_spec.rb +73 -0
  85. data/spec/rdkafka/admin_spec.rb +770 -0
  86. data/spec/rdkafka/bindings_spec.rb +223 -0
  87. data/spec/rdkafka/callbacks_spec.rb +20 -0
  88. data/spec/rdkafka/config_spec.rb +258 -0
  89. data/spec/rdkafka/consumer/headers_spec.rb +73 -0
  90. data/spec/rdkafka/consumer/message_spec.rb +139 -0
  91. data/spec/rdkafka/consumer/partition_spec.rb +57 -0
  92. data/spec/rdkafka/consumer/topic_partition_list_spec.rb +248 -0
  93. data/spec/rdkafka/consumer_spec.rb +1274 -0
  94. data/spec/rdkafka/error_spec.rb +89 -0
  95. data/spec/rdkafka/metadata_spec.rb +79 -0
  96. data/spec/rdkafka/native_kafka_spec.rb +130 -0
  97. data/spec/rdkafka/producer/delivery_handle_spec.rb +45 -0
  98. data/spec/rdkafka/producer/delivery_report_spec.rb +25 -0
  99. data/spec/rdkafka/producer/partitions_count_cache_spec.rb +359 -0
  100. data/spec/rdkafka/producer_spec.rb +1052 -0
  101. data/spec/spec_helper.rb +195 -0
  102. metadata +276 -0
@@ -0,0 +1,195 @@
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('allow.auto.create.topics': true).consumer
82
+ consumer.subscribe(topic)
83
+ timeout = Time.now.to_i + timeout_in_seconds
84
+ retry_count = 0
85
+ max_retries = 10
86
+
87
+ loop do
88
+ if timeout <= Time.now.to_i
89
+ raise "Timeout of #{timeout_in_seconds} seconds reached in wait_for_message"
90
+ end
91
+
92
+ begin
93
+ message = consumer.poll(100)
94
+ if message &&
95
+ message.partition == delivery_report.partition &&
96
+ message.offset == delivery_report.offset
97
+ return message
98
+ end
99
+ rescue Rdkafka::RdkafkaError => e
100
+ if e.code == :unknown_topic_or_part && retry_count < max_retries
101
+ retry_count += 1
102
+ sleep(0.1) # Small delay before retry
103
+ next
104
+ else
105
+ raise
106
+ end
107
+ end
108
+ end
109
+ ensure
110
+ consumer.close if new_consumer
111
+ end
112
+
113
+ def wait_for_assignment(consumer)
114
+ 10.times do
115
+ break if !consumer.assignment.empty?
116
+ sleep 1
117
+ end
118
+ end
119
+
120
+ def wait_for_unassignment(consumer)
121
+ 10.times do
122
+ break if consumer.assignment.empty?
123
+ sleep 1
124
+ end
125
+ end
126
+
127
+ def notify_listener(listener, &block)
128
+ # 1. subscribe and poll
129
+ consumer.subscribe("consume_test_topic")
130
+ wait_for_assignment(consumer)
131
+ consumer.poll(100)
132
+
133
+ block.call if block
134
+
135
+ # 2. unsubscribe
136
+ consumer.unsubscribe
137
+ wait_for_unassignment(consumer)
138
+ consumer.close
139
+ end
140
+
141
+ RSpec.configure do |config|
142
+ config.filter_run focus: true
143
+ config.run_all_when_everything_filtered = true
144
+
145
+ config.before(:each) do
146
+ Rdkafka::Config.statistics_callback = nil
147
+ # We need to clear it so state does not leak between specs
148
+ Rdkafka::Producer.partitions_count_cache.to_h.clear
149
+ end
150
+
151
+ config.before(:suite) do
152
+ admin = rdkafka_config.admin
153
+ {
154
+ consume_test_topic: 3,
155
+ empty_test_topic: 3,
156
+ load_test_topic: 3,
157
+ produce_test_topic: 3,
158
+ rake_test_topic: 3,
159
+ watermarks_test_topic: 3,
160
+ partitioner_test_topic: 25,
161
+ example_topic: 1
162
+ }.each do |topic, partitions|
163
+ create_topic_handle = admin.create_topic(topic.to_s, partitions, 1)
164
+ begin
165
+ create_topic_handle.wait(max_wait_timeout: 1.0)
166
+ rescue Rdkafka::RdkafkaError => ex
167
+ raise unless ex.message.match?(/topic_already_exists/)
168
+ end
169
+ end
170
+ admin.close
171
+ end
172
+
173
+ config.around(:each) do |example|
174
+ # Timeout specs after a minute. If they take longer
175
+ # they are probably stuck
176
+ Timeout::timeout(60) do
177
+ example.run
178
+ end
179
+ end
180
+ end
181
+
182
+ class RdKafkaTestConsumer
183
+ def self.with
184
+ consumer = Rdkafka::Bindings.rd_kafka_new(
185
+ :rd_kafka_consumer,
186
+ nil,
187
+ nil,
188
+ 0
189
+ )
190
+ yield consumer
191
+ ensure
192
+ Rdkafka::Bindings.rd_kafka_consumer_close(consumer)
193
+ Rdkafka::Bindings.rd_kafka_destroy(consumer)
194
+ end
195
+ end
metadata ADDED
@@ -0,0 +1,276 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rdkafka
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.22.0.beta1
5
+ platform: x86_64-linux-gnu
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: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">"
60
+ - !ruby/object:Gem::Version
61
+ version: '12'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">"
67
+ - !ruby/object:Gem::Version
68
+ version: '12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ostruct
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
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
+ - ext/Rakefile
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".github/CODEOWNERS"
148
+ - ".github/FUNDING.yml"
149
+ - ".github/workflows/ci_linux_x86_64_gnu.yml"
150
+ - ".github/workflows/ci_linux_x86_64_musl.yml"
151
+ - ".github/workflows/ci_macos_arm64.yml"
152
+ - ".github/workflows/push_linux_x86_64_gnu.yml"
153
+ - ".github/workflows/push_linux_x86_64_musl.yml"
154
+ - ".github/workflows/push_macos_arm64.yml"
155
+ - ".github/workflows/push_ruby.yml"
156
+ - ".github/workflows/verify-action-pins.yml"
157
+ - ".gitignore"
158
+ - ".rspec"
159
+ - ".ruby-gemset"
160
+ - ".ruby-version"
161
+ - ".yardopts"
162
+ - CHANGELOG.md
163
+ - Gemfile
164
+ - MIT-LICENSE
165
+ - README.md
166
+ - Rakefile
167
+ - docker-compose.yml
168
+ - ext/README.md
169
+ - ext/Rakefile
170
+ - ext/build_common.sh
171
+ - ext/build_linux_x86_64_gnu.sh
172
+ - ext/build_linux_x86_64_musl.sh
173
+ - ext/build_macos_arm64.sh
174
+ - ext/librdkafka.so
175
+ - lib/rdkafka.rb
176
+ - lib/rdkafka/abstract_handle.rb
177
+ - lib/rdkafka/admin.rb
178
+ - lib/rdkafka/admin/acl_binding_result.rb
179
+ - lib/rdkafka/admin/config_binding_result.rb
180
+ - lib/rdkafka/admin/config_resource_binding_result.rb
181
+ - lib/rdkafka/admin/create_acl_handle.rb
182
+ - lib/rdkafka/admin/create_acl_report.rb
183
+ - lib/rdkafka/admin/create_partitions_handle.rb
184
+ - lib/rdkafka/admin/create_partitions_report.rb
185
+ - lib/rdkafka/admin/create_topic_handle.rb
186
+ - lib/rdkafka/admin/create_topic_report.rb
187
+ - lib/rdkafka/admin/delete_acl_handle.rb
188
+ - lib/rdkafka/admin/delete_acl_report.rb
189
+ - lib/rdkafka/admin/delete_groups_handle.rb
190
+ - lib/rdkafka/admin/delete_groups_report.rb
191
+ - lib/rdkafka/admin/delete_topic_handle.rb
192
+ - lib/rdkafka/admin/delete_topic_report.rb
193
+ - lib/rdkafka/admin/describe_acl_handle.rb
194
+ - lib/rdkafka/admin/describe_acl_report.rb
195
+ - lib/rdkafka/admin/describe_configs_handle.rb
196
+ - lib/rdkafka/admin/describe_configs_report.rb
197
+ - lib/rdkafka/admin/incremental_alter_configs_handle.rb
198
+ - lib/rdkafka/admin/incremental_alter_configs_report.rb
199
+ - lib/rdkafka/bindings.rb
200
+ - lib/rdkafka/callbacks.rb
201
+ - lib/rdkafka/config.rb
202
+ - lib/rdkafka/consumer.rb
203
+ - lib/rdkafka/consumer/headers.rb
204
+ - lib/rdkafka/consumer/message.rb
205
+ - lib/rdkafka/consumer/partition.rb
206
+ - lib/rdkafka/consumer/topic_partition_list.rb
207
+ - lib/rdkafka/error.rb
208
+ - lib/rdkafka/helpers/oauth.rb
209
+ - lib/rdkafka/helpers/time.rb
210
+ - lib/rdkafka/metadata.rb
211
+ - lib/rdkafka/native_kafka.rb
212
+ - lib/rdkafka/producer.rb
213
+ - lib/rdkafka/producer/delivery_handle.rb
214
+ - lib/rdkafka/producer/delivery_report.rb
215
+ - lib/rdkafka/producer/partitions_count_cache.rb
216
+ - lib/rdkafka/version.rb
217
+ - rdkafka.gemspec
218
+ - renovate.json
219
+ - spec/rdkafka/abstract_handle_spec.rb
220
+ - spec/rdkafka/admin/create_acl_handle_spec.rb
221
+ - spec/rdkafka/admin/create_acl_report_spec.rb
222
+ - spec/rdkafka/admin/create_topic_handle_spec.rb
223
+ - spec/rdkafka/admin/create_topic_report_spec.rb
224
+ - spec/rdkafka/admin/delete_acl_handle_spec.rb
225
+ - spec/rdkafka/admin/delete_acl_report_spec.rb
226
+ - spec/rdkafka/admin/delete_topic_handle_spec.rb
227
+ - spec/rdkafka/admin/delete_topic_report_spec.rb
228
+ - spec/rdkafka/admin/describe_acl_handle_spec.rb
229
+ - spec/rdkafka/admin/describe_acl_report_spec.rb
230
+ - spec/rdkafka/admin_spec.rb
231
+ - spec/rdkafka/bindings_spec.rb
232
+ - spec/rdkafka/callbacks_spec.rb
233
+ - spec/rdkafka/config_spec.rb
234
+ - spec/rdkafka/consumer/headers_spec.rb
235
+ - spec/rdkafka/consumer/message_spec.rb
236
+ - spec/rdkafka/consumer/partition_spec.rb
237
+ - spec/rdkafka/consumer/topic_partition_list_spec.rb
238
+ - spec/rdkafka/consumer_spec.rb
239
+ - spec/rdkafka/error_spec.rb
240
+ - spec/rdkafka/metadata_spec.rb
241
+ - spec/rdkafka/native_kafka_spec.rb
242
+ - spec/rdkafka/producer/delivery_handle_spec.rb
243
+ - spec/rdkafka/producer/delivery_report_spec.rb
244
+ - spec/rdkafka/producer/partitions_count_cache_spec.rb
245
+ - spec/rdkafka/producer_spec.rb
246
+ - spec/spec_helper.rb
247
+ licenses:
248
+ - MIT
249
+ metadata:
250
+ funding_uri: https://karafka.io/#become-pro
251
+ homepage_uri: https://karafka.io
252
+ changelog_uri: https://karafka.io/docs/Changelog-Rdkafka
253
+ bug_tracker_uri: https://github.com/karafka/rdkafka-ruby/issues
254
+ source_code_uri: https://github.com/karafka/rdkafka-ruby
255
+ documentation_uri: https://karafka.io/docs
256
+ rubygems_mfa_required: 'true'
257
+ rdoc_options: []
258
+ require_paths:
259
+ - lib
260
+ required_ruby_version: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '3.1'
265
+ required_rubygems_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ requirements: []
271
+ rubygems_version: 3.6.7
272
+ specification_version: 4
273
+ summary: The rdkafka gem is a modern Kafka client library for Ruby based on librdkafka.
274
+ It wraps the production-ready C client using the ffi gem and targets Kafka 1.0+
275
+ and Ruby 2.7+.
276
+ test_files: []