This module provides low-level protocol support for Apache Kafka as well as high-level consumer and producer classes. Request batching is supported by the protocol as well as broker-aware request routing. Gzip and Snappy compression is also supported for message sets.
Compatible with Apache Kafka 0.8.0
Copyright 2013, David Arthur under Apache License, v2.0. See LICENSE
I'm following the version numbers of Kafka, plus one number to indicate the version of this project. The current version is 0.8.0-1. This version is under development, APIs are subject to change.
from kafka.client import KafkaClient
from kafka.consumer import SimpleConsumer
from kafka.producer import SimpleProducer
kafka = KafkaClient("localhost", 9092)
producer = SimpleProducer(kafka, "my-topic")
producer.send_messages("some message")
producer.send_messages("this method", "is variadic")
consumer = SimpleConsumer(kafka, "my-group", "my-topic")
for message in consumer:
print(message)
kafka.close()from kafka.client import KafkaClient
kafka = KafkaClient("localhost", 9092)
req = ProduceRequest(topic="my-topic", partition=1,
messages=[KafkaProdocol.encode_message("some message")])
resps = kafka.send_produce_request(payloads=[req], fail_on_error=True)
kafka.close()
resps[0].topic # "my-topic"
resps[0].partition # 1
resps[0].error # 0 (hopefully)
resps[0].offset # offset of the first message sent in this requestInstall with your favorite package manager
Pip:
git clone https://github.com/mumrah/kafka-python
pip install ./kafka-pythonSetuptools:
git clone https://github.com/mumrah/kafka-python
easy_install ./kafka-pythonUsing setup.py directly:
git clone https://github.com/mumrah/kafka-python
cd kafka-python
python setup.py installDownload and build Snappy from http://code.google.com/p/snappy/downloads/list
wget http://snappy.googlecode.com/files/snappy-1.0.5.tar.gz
tar xzvf snappy-1.0.5.tar.gz
cd snappy-1.0.5
./configure
make
sudo make installInstall the python-snappy module
pip install python-snappySome of the tests will fail if Snappy is not installed. These tests will throw NotImplementedError. If you see other failures, they might be bugs - so please report them!
These are broken at the moment
python -m test.unitFirst, checkout the Kafka source
git submodule init
git submodule update
cd kafka-src
./sbt update
./sbt packageNext start up a ZooKeeper server on localhost:2181
/opt/zookeeper/bin/zkServer.sh startThis will actually start up real Kafka brokers and send messages in using the client.