wooga-kafka-rb 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,13 +1,19 @@
1
1
  # kafka-rb
2
- kafka-rb allows you to produce messages to the Kafka distributed publish/subscribe messaging service.
2
+ kafka-rb allows you to produce and consume messages to / from the Kafka distributed messaging service.
3
+ This is an improved version of the original Ruby client written by Alexandro Crosa,
4
+ and is used in production at wooga.
3
5
 
4
6
  ## Requirements
5
- You need to have access to your Kafka instance and be able to connect through TCP. You can obtain a copy and instructions on how to setup kafka at https://github.com/kafka-dev/kafka
7
+ You need to have access to your Kafka instance and be able to connect through TCP.
8
+ You can obtain a copy and instructions on how to setup kafka at http://incubator.apache.org/kafka/
9
+
6
10
 
7
11
  ## Installation
8
- sudo gem install kafka-rb
9
12
 
10
- (the code works fine with JRuby, Ruby 1.8x and Ruby 1.9.x)
13
+ sudo gem install wooga-kafka-rb
14
+
15
+ (should work fine with JRuby, Ruby 1.8 and 1.9)
16
+
11
17
 
12
18
  ## Usage
13
19
 
@@ -55,8 +61,5 @@ sudo gem install kafka-rb
55
61
  end
56
62
 
57
63
 
58
- Contact for questions
59
-
60
- alejandrocrosa at(@) gmail.com
61
-
62
- http://twitter.com/alejandrocrosa
64
+ ## Questions?
65
+ tim.lossen@wooga.net
data/Rakefile CHANGED
@@ -21,14 +21,13 @@ require 'rspec/core/rake_task'
21
21
 
22
22
  spec = Gem::Specification.new do |s|
23
23
  s.name = %q{wooga-kafka-rb}
24
- s.version = "0.0.7"
24
+ s.version = "0.0.8"
25
25
 
26
26
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
27
27
  s.authors = ["Alejandro Crosa", "Stefan Mees", "Tim Lossen"]
28
28
  s.autorequire = %q{kafka-rb}
29
- s.date = %q{2011-01-13}
29
+ s.date = Time.now.strftime("%Y-%m-%d")
30
30
  s.description = %q{kafka-rb allows you to produce and consume messages using the Kafka distributed publish/subscribe messaging service.}
31
- s.email = %q{alejandrocrosa@gmail.com}
32
31
  s.extra_rdoc_files = ["LICENSE"]
33
32
  s.files = ["LICENSE", "README.md", "Rakefile", "lib/kafka", "lib/kafka/batch.rb", "lib/kafka/consumer.rb", "lib/kafka/io.rb", "lib/kafka/message.rb", "lib/kafka/producer.rb", "lib/kafka/request_type.rb", "lib/kafka/error_codes.rb", "lib/kafka.rb", "spec/batch_spec.rb", "spec/consumer_spec.rb", "spec/io_spec.rb", "spec/kafka_spec.rb", "spec/message_spec.rb", "spec/producer_spec.rb", "spec/spec_helper.rb"]
34
33
  s.homepage = %q{http://github.com/wooga/kafka-rb}
@@ -54,14 +53,6 @@ Rake::GemPackageTask.new(spec) do |pkg|
54
53
  pkg.gem_spec = spec
55
54
  end
56
55
 
57
- task :default => :rspec
58
-
59
- desc "Run specs"
60
- RSpec::Core::RakeTask.new do |t|
61
- t.pattern = FileList['spec/**/*_spec.rb']
62
- t.rspec_opts = %w(-fs --color)
63
- end
64
-
65
56
  desc "install the gem locally"
66
57
  task :install => [:package] do
67
58
  sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
@@ -72,3 +63,12 @@ RSpec::Core::RakeTask.new(:rcov) do |t|
72
63
  t.pattern = FileList['spec/**/*_spec.rb']
73
64
  t.rcov = true
74
65
  end
66
+
67
+ desc "Run specs"
68
+ RSpec::Core::RakeTask.new do |t|
69
+ t.pattern = FileList['spec/**/*_spec.rb']
70
+ t.rspec_opts = %w(-fs --color)
71
+ end
72
+
73
+ task :default => :spec
74
+
@@ -21,6 +21,7 @@ module Kafka
21
21
  MAX_SIZE = 1024 * 1024 # 1 megabyte
22
22
  DEFAULT_POLLING_INTERVAL = 2 # 2 seconds
23
23
  MAX_OFFSETS = 1
24
+ LATEST_OFFSET = -1
24
25
  EARLIEST_OFFSET = -2
25
26
 
26
27
  attr_accessor :topic, :partition, :offset, :max_size, :request_type, :polling
@@ -46,7 +47,7 @@ module Kafka
46
47
  end
47
48
 
48
49
  def consume
49
- self.offset ||= fetch_earliest_offset
50
+ self.offset ||= fetch_latest_offset
50
51
  send_consume_request
51
52
  data = read_data_response
52
53
  parse_message_set_from(data)
@@ -54,14 +55,14 @@ module Kafka
54
55
  nil
55
56
  end
56
57
 
57
- def fetch_earliest_offset
58
+ def fetch_latest_offset
58
59
  send_offsets_request
59
60
  read_offsets_response
60
61
  end
61
62
 
62
63
  def send_offsets_request
63
64
  write(encoded_request_size)
64
- write(encode_request(Kafka::RequestType::OFFSETS, topic, partition, EARLIEST_OFFSET, MAX_OFFSETS))
65
+ write(encode_request(Kafka::RequestType::OFFSETS, topic, partition, LATEST_OFFSET, MAX_OFFSETS))
65
66
  end
66
67
 
67
68
  def read_offsets_response
@@ -157,7 +157,7 @@ describe Consumer do
157
157
 
158
158
  it "should fetch initial offset if no offset is given" do
159
159
  @consumer = Consumer.new
160
- @consumer.should_receive(:fetch_earliest_offset).exactly(:once).and_return(1000)
160
+ @consumer.should_receive(:fetch_latest_offset).exactly(:once).and_return(1000)
161
161
  @consumer.should_receive(:send_consume_request).and_return(true)
162
162
  @consumer.should_receive(:read_data_response).and_return("")
163
163
  @consumer.consume
@@ -165,8 +165,8 @@ describe Consumer do
165
165
  end
166
166
 
167
167
  it "should encode an offset request" do
168
- bytes = [Kafka::RequestType::OFFSETS].pack("n") + ["test".length].pack("n") + "test" + [0].pack("N") + [-2].pack("q").reverse + [Kafka::Consumer::MAX_OFFSETS].pack("N")
169
- @consumer.encode_request(Kafka::RequestType::OFFSETS, "test", 0, -2, Kafka::Consumer::MAX_OFFSETS).should eql(bytes)
168
+ bytes = [Kafka::RequestType::OFFSETS].pack("n") + ["test".length].pack("n") + "test" + [0].pack("N") + [-1].pack("q").reverse + [Kafka::Consumer::MAX_OFFSETS].pack("N")
169
+ @consumer.encode_request(Kafka::RequestType::OFFSETS, "test", 0, -1, Kafka::Consumer::MAX_OFFSETS).should eql(bytes)
170
170
  end
171
171
 
172
172
  it "should parse an offsets response" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 7
9
- version: 0.0.7
8
+ - 8
9
+ version: 0.0.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alejandro Crosa
@@ -16,7 +16,7 @@ autorequire: kafka-rb
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-01-13 00:00:00 +01:00
19
+ date: 2011-12-12 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -33,7 +33,7 @@ dependencies:
33
33
  type: :development
34
34
  version_requirements: *id001
35
35
  description: kafka-rb allows you to produce and consume messages using the Kafka distributed publish/subscribe messaging service.
36
- email: alejandrocrosa@gmail.com
36
+ email:
37
37
  executables: []
38
38
 
39
39
  extensions: []