No description
Find a file
Russell c606237b1c Remove queue from zk consumer
To ensure client code has explicit control over the reading of messages
This change removes the ability to listen to multiple topics at once,
as it is not feasible to build this functionality in at the library
level while still giving client code total control and knowledge over
which messages have been read / what the current offset is.
2014-02-24 12:36:03 +00:00
autodoc@b818f4e6bc updated autodoc 2012-01-26 10:59:48 +00:00
dev-resources change log4j to append to ./logs/kafka.log; tidy the zk consumer test 2013-06-09 07:51:34 +01:00
src/clj_kafka Remove queue from zk consumer 2014-02-24 12:36:03 +00:00
test/clj_kafka/test Remove queue from zk consumer 2014-02-24 12:36:03 +00:00
.gitignore change log4j to append to ./logs/kafka.log; tidy the zk consumer test 2013-06-09 07:51:34 +01:00
.travis.yml update travis-ci to run only expectations 2013-06-09 09:18:19 +01:00
project.clj release 0.1.2 built with kafka 0.8 final release 2013-12-15 20:56:40 +00:00
README.md Remove queue from zk consumer 2014-02-24 12:36:03 +00:00

clj-kafka

Clojure library for Kafka.

Current build status: Build Status

Development is against the 0.8 release of Kafka. The protocols for 0.7 and 0.8 are incompatible so this will only work when connecting to a 0.8 cluster. Earlier releases of clj-kafka support the earlier 0.7 release if you need it.

Installing

Add the following to your Leiningen project.clj:

[clj-kafka "0.1.2-0.8"]

Usage

Producer

Discovery of Kafka brokers from Zookeeper:

(brokers {"zookeeper.connect" "127.0.0.1:2181"})
;; ({:host "localhost", :jmx_port -1, :port 9999, :version 1})
(use 'clj-kafka.producer)

(def p (producer {"metadata.broker.list" "localhost:9999"
                  "serializer.class" "kafka.serializer.DefaultEncoder"
                  "partitioner.class" "kafka.producer.DefaultPartitioner"}))

(send-message p (message "test" (.getBytes "this is my message")))

Zookeeper Consumer

The Zookeeper consumer uses broker information contained within Zookeeper to consume messages. This consumer also allows the client to automatically commit consumed offsets so they're not retrieved again.

(use 'clj-kafka.consumer.zk)
(use 'clj-kafka.core)

(def config {"zookeeper.connect" "localhost:2182"
             "group.id" "clj-kafka.consumer"
             "auto.offset.reset" "smallest"
             "auto.commit.enable" "false"})

(with-resource [c (consumer config)]
  shutdown
  (take 2 (messages c "test")))

License

Copyright © 2013 Paul Ingles

Distributed under the Eclipse Public License, the same as Clojure.