Description
A client for Apache Kafka written entirely in Rust.
Kafka Rust Client alternatives and similar packages
Based on the "Apache Kafka" category.
Alternatively, view Kafka Rust Client alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of Kafka Rust Client or a related project?
Popular Comparisons
README
Kafka Rust Client
Project Status
This project has not had an active maintainer in quite some time. At this point, it is probably best to use rust-rdkafka instead. If you are interested in becoming a maintainer, please post in the related issue.
Documentation
- This library is primarily documented through examples in its API documentation.
- Documentation about Kafka itself can be found at its project home page.
Installation
This crate works with Cargo and is on crates.io. The API is currently under heavy movement although we do follow semantic versioning (but expect the version number to grow quickly).
[dependencies]
kafka = "0.8"
To build kafka-rust the usual cargo build
should suffice. The crate
supports various features which can be turned off at compile time.
See kafka-rust's Cargo.toml
and cargo's
documentation.
Supported Kafka version
kafka-rust
is tested for compatibility with Kafka 0.8.2 and newer. However,
not all features from Kafka 0.9 and newer are supported yet.
Examples
As mentioned, the cargo generated documentation contains some examples. Further, standalone, compilable example programs are provided in the examples directory of the repository.
Consumer
This is a higher-level consumer API for Kafka and is provided by the
module kafka::consumer
. It provides convenient offset management
support on behalf of a specified group. This is the API a client
application of this library wants to use for receiving messages from
Kafka.
Producer
This is a higher-level producer API for Kafka and is provided by the
module kafka::producer
. It provides convenient automatic partition
assignment capabilities through partitioners. This is the API a
client application of this library wants to use for sending messsages
to Kafka.
KafkaClient
KafkaClient
in the kafka::client
module is the central point of
this API. However, this is a mid-level abstraction for Kafka rather
suitable for building higher-level APIs. Applications typically want
to use the already mentioned Consumer
and Producer
.
Nevertheless, the main features or KafkaClient
are:
- Loading metadata
- Fetching topic offsets
- Sending messages
- Fetching messages
- Committing a consumer group's offsets
- Fetching a consumer group's offsets
Bugs / Features / Contributing
There's still a lot of room for improvement on kafka-rust
.
Not everything works right at the moment, and testing coverage could be better.
Use it in production at your own risk. Have a look at the
issue tracker and feel free
to contribute by reporting new problems or contributing to existing
ones. Any constructive feedback is warmly welcome!
As usually with open source, don't hesitate to fork the repo and
submit a pull request if you see something to be changed. We'll be
happy to see kafka-rust
improving over time.
Integration tests
When working locally, the integration tests require that you must have
Docker (1.10.0+) and docker-compose (1.6.0+) installed and run the tests via the
included run-all-tests
script in the tests
directory. See the run-all-tests
script itself for details on its usage.
Creating a topic
Note unless otherwise explicitly stated in the documentation, this library will ignore requests to topics which it doesn't know about. In particular it will not try to retrieve messages from non-existing/unknown topics. (This behavior is very likely to change in future version of this library.)
Given a local kafka server installation you can create topics with the
following command (where kafka-topics.sh
is part of the Kafka
distribution):
kafka-topics.sh --topic my-topic --create --zookeeper localhost:2181 --partitions 1 --replication-factor 1
See also Kafka's quickstart guide for more information.
Alternative/Related projects
- rust-rdkafka is an
emerging alternative Kafka client library for Rust based on
librdkafka
.