Skip to content
🐴 Pure Pony Kafka client
Branch: master
Clone or download
JONBRWN Update code for ponyc 0.28.0
  - updates PosixDate format calls to be partial and wrapped in
    try blocks
Latest commit c767e46 Apr 2, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples Update code for ponyc 0.28.0 Apr 2, 2019
misc/kafka
pony-kafka Update code for ponyc 0.28.0 Apr 2, 2019
.gitignore version 0.0.0.0.0.0.0.0.0.1 Aug 11, 2017
CODE_OF_CONDUCT.md
CONTRIBUTING.md Add Code of Conduct, Contributing, and Readme (#2) Sep 7, 2017
LICENSE Add licenses. (#1) Aug 29, 2017
README.md

README.md

Pony-Kafka

Welcome to Pony Kafka.

This is a pure kafka client written in Pony. The goal is to eventually reach feature parity with the official kafka client.

Why

The main reason this exists is because the alternatives weren't necessarily going to be clean/easy to integrate into Pony and its normal "async everything" manner of working.

Building

You need ponyc to compile pony-kafka. This is currently tested with ponyc version master.

You also need the following (in addition to what is needed for Pony itself):

  • LZ4
  • Snappy
  • Zlib

For Ubuntu 16.04 or newer you can run:

sudo apt-get install libsnappy-dev liblz4-dev zlib1g-dev

For older Ubuntu you can run:

sudo apt-get install libsnappy-dev
cd /tmp
wget -O liblz4-1.7.5.tar.gz https://github.com/lz4/lz4/archive/v1.7.5.tar.gz
tar zxvf liblz4-1.7.5.tar.gz
cd lz4-1.7.5
sudo make install

For OSX you can run:

brew install snappy lz4

You can then build the pony-kafka tests by running:

ponyc pony-kafka

or the example performance application by running:

ponyc examples/performance

Current status

This is currently alpha quality software that still needs more work before it is production ready.

A quick summary of features:

Feature Description Status
Basic Consumer Ability to connect to kafka brokers and consume messages Implemented
Group Consumer Ability to do high level consumer failover like official kafka client Not Implemented
Producer Ability to connect to kafka brokers and produce messages Implemented
Leader Failover Ability to correctly recover from/react to kafka leader failover Partially Implemented
Compression Ability to use LZ4/Snappy/Zlib compression for message sets Implemented
Message Format V2 Ability to use message set format version 2 Not Implemented
Idempotence/Transaction Ability to use idempotence/transactions Not Implemented
Metrics Ability to collect metrics and provide reports of metrics periodically Not Implemented
Security Ability to use SSL/SASL/etc to secure connection to Kafka brokers Not Implemented
Message Interceptors Ability to intercept messages before produce and after consume to be able to modify them or extract metadata from them for monitoring and other purposes Not Implemented
Producer Batching Ability to batch produce requests for efficiency Implemented
Producer Rate Limiting Ability to limit number of outstanding produce requests Implemented
Throttling Ability to tell producers of data to slow down due to network congestion Implemented
Message Delivery Reports Report back to producers once Kafka has confirm message has been successfully stored Implemented
Logging Logging of what is happening/errors Partially Implemented
Error Handling Ability to gracefully handle errors (retry if possible; fail fast if not) Partially Implemented
Documentation Comprehensive documentation for developers using Pony Kafka and developers enhancing Pony Kafka Not Implemented
Testing Comprehensive test suite to confirm everything is working as expected Not Implemented
You can’t perform that action at this time.