Skip to content

Commit 1927778

Browse files
committedJun 9, 2016
Add continuous integration on Heroku
* Remove the Rakefile, it caused build issues. * Loosen the dependency on Active Support, bundler had problems. * Add a consumer/producer pair.
1 parent af5ef2f commit 1927778

8 files changed

+142
-8
lines changed
 

‎.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/.bundle/
22
/.yardoc
3-
/Gemfile.lock
43
/_yardoc/
54
/coverage/
65
/doc/

‎Gemfile.lock

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
PATH
2+
remote: .
3+
specs:
4+
ruby-kafka (0.3.8)
5+
6+
GEM
7+
remote: https://rubygems.org/
8+
specs:
9+
activesupport (4.2.5)
10+
i18n (~> 0.7)
11+
json (~> 1.7, >= 1.7.7)
12+
minitest (~> 5.1)
13+
thread_safe (~> 0.3, >= 0.3.4)
14+
tzinfo (~> 1.1)
15+
benchmark-perf (0.1.0)
16+
builder (3.2.2)
17+
coderay (1.1.0)
18+
colored (1.2)
19+
diff-lcs (1.2.5)
20+
docker-api (1.25.0)
21+
excon (>= 0.38.0)
22+
json
23+
dogstatsd-ruby (1.6.0)
24+
dotenv (2.1.0)
25+
excon (0.45.4)
26+
i18n (0.7.0)
27+
json (1.8.3)
28+
method_source (0.8.2)
29+
minitest (5.8.3)
30+
pry (0.9.12.6)
31+
coderay (~> 1.0)
32+
method_source (~> 0.8)
33+
slop (~> 3.4)
34+
rake (10.5.0)
35+
rspec (3.4.0)
36+
rspec-core (~> 3.4.0)
37+
rspec-expectations (~> 3.4.0)
38+
rspec-mocks (~> 3.4.0)
39+
rspec-benchmark (0.1.0)
40+
benchmark-perf (~> 0.1.0)
41+
rspec (>= 3.0.0, < 4.0.0)
42+
rspec-core (3.4.1)
43+
rspec-support (~> 3.4.0)
44+
rspec-expectations (3.4.0)
45+
diff-lcs (>= 1.2.0, < 2.0)
46+
rspec-support (~> 3.4.0)
47+
rspec-mocks (3.4.1)
48+
diff-lcs (>= 1.2.0, < 2.0)
49+
rspec-support (~> 3.4.0)
50+
rspec-support (3.4.1)
51+
rspec_junit_formatter (0.2.2)
52+
builder (< 4)
53+
rspec-core (>= 2, < 4, != 2.12.0)
54+
slop (3.6.0)
55+
snappy (0.0.12)
56+
thread_safe (0.3.5)
57+
tzinfo (1.2.2)
58+
thread_safe (~> 0.1)
59+
60+
PLATFORMS
61+
ruby
62+
63+
DEPENDENCIES
64+
activesupport
65+
bundler (>= 1.9.5)
66+
colored
67+
docker-api
68+
dogstatsd-ruby
69+
dotenv
70+
pry
71+
rake (~> 10.0)
72+
rspec
73+
rspec-benchmark
74+
rspec_junit_formatter (= 0.2.2)
75+
ruby-kafka!
76+
snappy
77+
78+
BUNDLED WITH
79+
1.10.6

‎Procfile

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
producer: bundle exec ruby ci/producer.rb
2+
consumer: bundle exec ruby ci/consumer.rb

‎Rakefile

-6
This file was deleted.

‎ci/consumer.rb

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Consumes messages from a Kafka topic.
2+
3+
require_relative "init"
4+
5+
consumer = $kafka.consumer(group_id: "greetings-group")
6+
consumer.subscribe("greetings")
7+
8+
num_messages = 0
9+
10+
trap("TERM") { consumer.stop }
11+
12+
consumer.each_message do |message|
13+
num_messages += 1
14+
15+
if num_messages % 1000 == 0
16+
puts "Processed #{num_messages} messages"
17+
end
18+
end

‎ci/init.rb

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
2+
3+
require "kafka"
4+
5+
logger = Logger.new(STDOUT)
6+
logger.level = Logger::INFO
7+
logger.formatter = -> (_, _, _, msg) { msg }
8+
9+
STDOUT.sync = true
10+
11+
$kafka = Kafka.new(
12+
logger: logger,
13+
seed_brokers: ENV.fetch("HEROKU_KAFKA_URL"),
14+
ssl_ca_cert: ENV.fetch("HEROKU_KAFKA_TRUSTED_CERT"),
15+
ssl_client_cert: ENV.fetch("HEROKU_KAFKA_CLIENT_CERT"),
16+
ssl_client_cert_key: ENV.fetch("HEROKU_KAFKA_CLIENT_CERT_KEY"),
17+
)

‎ci/producer.rb

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Continuously produces messages to a Kafka topic.
2+
3+
require_relative "init"
4+
5+
producer = $kafka.async_producer(
6+
delivery_interval: 1,
7+
max_queue_size: 5_000,
8+
max_buffer_size: 10_000,
9+
)
10+
11+
num_messages = 0
12+
shutdown = false
13+
14+
trap("TERM") { shutdown = true }
15+
16+
until shutdown
17+
begin
18+
producer.produce("hello", key: "world", topic: "greetings")
19+
rescue Kafka::BufferOverflow
20+
puts "Buffer overflow, backing off..."
21+
sleep 10
22+
end
23+
end
24+
25+
producer.shutdown

‎ruby-kafka.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
3434
spec.add_development_dependency "dotenv"
3535
spec.add_development_dependency "docker-api"
3636
spec.add_development_dependency "rspec-benchmark"
37-
spec.add_development_dependency "activesupport", ">= 4.2.0", "< 5.1"
37+
spec.add_development_dependency "activesupport"
3838
spec.add_development_dependency "snappy"
3939
spec.add_development_dependency "colored"
4040
spec.add_development_dependency "rspec_junit_formatter", "0.2.2"

0 commit comments

Comments
 (0)
Please sign in to comment.