This project is currently unmaintained. There are a handful of other options for interacting with Kafka from Ruby:
- A pure ruby client, ruby-kafka, which is 0.9 compatible and support consumer groups.
- A REST proxy, Kafka Rest.
- For JRuby there is jruby-kafka which wraps the Java consumer.
Poseidon is a Kafka client. Poseidon only supports the 0.8 API and above.
Until 1.0.0 this should be considered ALPHA software and not neccessarily production ready.
Follow the instructions on the Kafka wiki to build Kafka 0.8 and get a test broker up and running.
require 'poseidon'
producer = Poseidon::Producer.new(["localhost:9092"], "my_test_producer")
messages = []
messages << Poseidon::MessageToSend.new("topic1", "value1")
messages << Poseidon::MessageToSend.new("topic2", "value2")
producer.send_messages(messages)
More detailed Poseidon::Producer documentation.
require 'poseidon'
consumer = Poseidon::PartitionConsumer.new("my_test_consumer", "localhost", 9092,
"topic1", 0, :earliest_offset)
loop do
messages = consumer.fetch
messages.each do |m|
puts m.value
end
end
More detailed Poseidon::PartitionConsumer documentation.
To use snappy compression in your producers or consumers, install the snappy gem or simply add gem 'snappy'
to your project's Gemfile.
This gem follows SemVer. In particular, the public API should not be considered stable and anything may change without warning until Version 1.0.0. Additionally, for the purposes of the versioning the public API is everything documented in the public API docs.
- Ruby 1.9.3 or higher (1.9.2 and below not supported!!!)
- Kafka 0.8 or higher
In order to run integration tests you must specify a KAFKA_PATH
environment variable which points to a built Kafka installation. To build Kafka locally follow the instructions provided by the project.
# cd ~/src/poseidon/
# bundle
# KAFKA_PATH=~/src/kafka bundle exec rake spec:all # run all unit and integration specs
The poseidon test suite will take care of spinning up and down the broker(s) needed for the integration tests.