-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathRakefile
35 lines (28 loc) · 1.09 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require "bundler/gem_tasks"
require "kafka/consumer"
require "rake/testtask"
require "benchmark"
Rake::TestTask.new do |t|
t.libs = ["lib", "test"]
t.test_files = FileList['test/*_test.rb']
end
namespace :kafka do
task :consumer do
zookeeper = ENV["ZOOKEEPER"] or raise "Specify the ZOOKEEPER connection string."
name = ENV["NAME"] or raise "Specify NAME to name the consumergroup."
topics = ENV["TOPICS"] or raise "Specify the TOPICS you want to consume. Use comma as separator."
consumer = Kafka::Consumer.new(name, topics.split(','), zookeeper: zookeeper, initial_offset: :earliest_offset)
Signal.trap("TERM") { puts "TERM received"; consumer.interrupt }
Signal.trap("INT") { puts "INT received"; consumer.interrupt }
counter = 0
duration = Benchmark.realtime do
consumer.each do |event|
counter += 1
print "Consumed #{counter} messages.\n" if counter % 1000 == 0
end
end
puts
puts "%d messages consumed in %0.3fs (%0.3f msg/s)" % [counter, duration, counter.to_f / duration]
end
end
task default: :test