rdkafka 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -2
- data/Rakefile +8 -6
- data/lib/rdkafka/producer.rb +3 -3
- data/lib/rdkafka/version.rb +1 -1
- data/rdkafka.gemspec +1 -1
- data/spec/rdkafka/config_spec.rb +3 -3
- data/spec/spec_helper.rb +9 -11
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c6cf79c7eb2f42ac06964f7533885503c8e44ed
|
4
|
+
data.tar.gz: 0e2032d5a0a400dfb371ef246eb55b62b53c3b95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3ffd0c03e768241efd8106a74478e867ab16219d4c707d0d9ba7fcb82258712334eab1bee9c9b6baf6bfad0e434325560cdceef1adfc3808286d4411191dd94
|
7
|
+
data.tar.gz: 4ecfe201e30506e90603b845a7154e0e68173696bde84432ec7f4a5261f38bf1a3a8172ef4e1282488810ed8c89e8dbbeb33b84d4ca6c520c5d08b6a48a4fb39
|
data/README.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
-
#
|
1
|
+
# Rdkafka
|
2
2
|
|
3
|
-
|
3
|
+
The `rdkafka` gem is a modern Kafka client library for Ruby based on
|
4
|
+
[librdkafka](https://github.com/edenhill/librdkafka/).
|
5
|
+
It wraps the production-ready C client using the [ffi](https://github.com/ffi/ffi)
|
6
|
+
gem and targets Kafka 0.10+ and Ruby 2.1+.
|
7
|
+
|
8
|
+
This gem only provides a high-level Kafka consumer. If you are running
|
9
|
+
an older version of Kafka and/or need the legacy simple consumer we
|
10
|
+
suggest using the [Hermann](https://github.com/reiseburo/hermann) gem.
|
4
11
|
|
5
12
|
## Development
|
6
13
|
|
@@ -14,3 +21,10 @@ debug output:
|
|
14
21
|
DEBUG_PRODUCER=true bundle exec rspec
|
15
22
|
DEBUG_CONSUMER=true bundle exec rspec
|
16
23
|
```
|
24
|
+
|
25
|
+
To see everything working run these in separate tabs:
|
26
|
+
|
27
|
+
```
|
28
|
+
bundle exec rake consume_messages
|
29
|
+
bundle exec rake produce_messages
|
30
|
+
```
|
data/Rakefile
CHANGED
@@ -5,15 +5,17 @@ task :create_topics do
|
|
5
5
|
`kafka-topics --create --topic=rake_test_topic --zookeeper=127.0.0.1:2181 --partitions=1 --replication-factor=1`
|
6
6
|
end
|
7
7
|
|
8
|
-
task :
|
8
|
+
task :produce_messages do
|
9
9
|
producer = Rdkafka::Config.new(
|
10
10
|
:"bootstrap.servers" => "localhost:9092"
|
11
11
|
).producer
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
100.times do |i|
|
13
|
+
producer.produce(
|
14
|
+
topic: "rake_test_topic",
|
15
|
+
payload: "Payload #{i} from Rake",
|
16
|
+
key: "Key #{i} from Rake"
|
17
|
+
).wait
|
18
|
+
end
|
17
19
|
end
|
18
20
|
|
19
21
|
task :consume_messages do
|
data/lib/rdkafka/producer.rb
CHANGED
@@ -36,9 +36,9 @@ module Rdkafka
|
|
36
36
|
|
37
37
|
delivery_handle = DeliveryHandle.new
|
38
38
|
delivery_handle[:pending] = true
|
39
|
-
delivery_handle[:response] =
|
40
|
-
delivery_handle[:partition] =
|
41
|
-
delivery_handle[:offset] =
|
39
|
+
delivery_handle[:response] = -1
|
40
|
+
delivery_handle[:partition] = -1
|
41
|
+
delivery_handle[:offset] = -1
|
42
42
|
|
43
43
|
# Produce the message
|
44
44
|
response = Rdkafka::FFI.rd_kafka_producev(
|
data/lib/rdkafka/version.rb
CHANGED
data/rdkafka.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.extensions = %w(ext/Rakefile)
|
19
19
|
|
20
20
|
gem.add_dependency 'ffi', '~> 1.9'
|
21
|
-
gem.add_dependency 'mini_portile2', '~> 2.
|
21
|
+
gem.add_dependency 'mini_portile2', '~> 2.1'
|
22
22
|
|
23
23
|
gem.add_development_dependency 'pry', '~> 0.10'
|
24
24
|
gem.add_development_dependency 'rspec', '~> 3.5'
|
data/spec/rdkafka/config_spec.rb
CHANGED
@@ -3,13 +3,13 @@ require "spec_helper"
|
|
3
3
|
describe Rdkafka::Config do
|
4
4
|
it "should store configuration" do
|
5
5
|
config = Rdkafka::Config.new
|
6
|
-
config[
|
7
|
-
expect(config[
|
6
|
+
config[:"key"] = 'value'
|
7
|
+
expect(config[:"key"]).to eq 'value'
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should use default configuration" do
|
11
11
|
config = Rdkafka::Config.new
|
12
|
-
expect(config[
|
12
|
+
expect(config[:"api.version.request"]).to eq true
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should create a consumer with valid config" do
|
data/spec/spec_helper.rb
CHANGED
@@ -3,17 +3,15 @@ require "rspec"
|
|
3
3
|
require "rdkafka"
|
4
4
|
|
5
5
|
def rdkafka_config
|
6
|
-
|
7
|
-
"broker,topic,msg"
|
8
|
-
elsif ENV["DEBUG_CONSUMER"]
|
9
|
-
"cgrp,topic,fetch"
|
10
|
-
else
|
11
|
-
""
|
12
|
-
end
|
13
|
-
Rdkafka::Config.new(
|
6
|
+
config = {
|
14
7
|
:"bootstrap.servers" => "localhost:9092",
|
15
8
|
:"group.id" => "ruby_test",
|
16
|
-
:"enable.partition.eof" => false
|
17
|
-
|
18
|
-
|
9
|
+
:"enable.partition.eof" => false
|
10
|
+
}
|
11
|
+
if ENV["DEBUG_PRODUCER"]
|
12
|
+
config[:debug] = "broker,topic,msg"
|
13
|
+
elsif ENV["DEBUG_CONSUMER"]
|
14
|
+
config[:debug] = "cgrp,topic,fetch"
|
15
|
+
end
|
16
|
+
Rdkafka::Config.new(config)
|
19
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdkafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
33
|
+
version: '2.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
131
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.6.
|
132
|
+
rubygems_version: 2.6.13
|
133
133
|
signing_key:
|
134
134
|
specification_version: 4
|
135
135
|
summary: Kafka client library wrapping librdkafka using the ffi gem and futures from
|