krs is a simple Kafka command-line tool written in Rust, inspired by kt.
Dual-licensed under MIT or the UNLICENSE.
- Easy to type
- Fast startup
- Hopefully intuitive to use
- Diagnostic output to stderr, main output to stdout, which allows below feature
- JSON output for easy consumption with jq
- Change some context variables (e.g. Kafka brokers or Zookeeper host) via environment variables,
.env
files, or pass it directly through the CLI.
First and foremost, always consult -h
or help
(or let me know if some stuff
is unclear).
krs -h
krs help
# All subcommands also have `help`, thanks to the amazing `clap` library.
krs env help
krs collects Kafka brokers and Zookeeper hosts from environment variables,
.env
file, and the CLI arguments as its context. To show context variables:
$ krs env show # or just `krs env`
If in doubt, you can always ask the tool which environment you're currently working on:
$ cat .env
KRS_ZOOKEEPER=localhost:2181
$ export KRS_BROKERS=localhost:9092
$ krs env show
Environment:
brokers: localhost:2181 (from env var (KRS_BROKERS))
zookeeper: localhost:9092 (from .env file (KRS_ZOOKEEPER))
There's a small helper to set the context variables (or you can just put the
environment variables KRS_BROKERS
/KRS_ZOOKEEPER
in your .env
file
directly):
$ krs env set -b localhost:9092 -z localhost:2181
Once you've set context variables, you can list Kafka topics:
krs topics list # or just `krs topics`
# You should pipe the output to `jq` to make it look much better.
krs topics | jq
Describe a Kafka topic:
krs topics describe -b localhost:9092 -z localhost:2181 -t topic-name
Produce and consume from topics:
krs topics create -t my-topic
krs producer -t my-topic
Starting console producer. Press Ctrl+C to exit.
> hello
Sent: (0, 1)
MSRV is Rust 1.39.0 (mostly because I built the tool with that version and haven't tested it with previous ones).
Mostly tested with Kafka 2.1.1-cp1 (Commit:9aa84c2aaa91e392)
.
Note: There will be no guarantees as to when these features are going to be implemented, but feel free to submit a PR.
- Consume from specified offset (earliest, latest, etc.)
- Describe configs for other Kafka resources (consumer groups, etc.)
- Port more management commands
- Bit more fine-grained control for producer (handle keys, send to partitions)
- More colors on the stderr output.
- Typing
kafka-console-consumer --broker-list localhost:9092 --topic test
is a mouthful. - In cases you forgot the arguments to
kafka-topics --create
, the tool will bombard you with its complete list of options, burying the most important error message that tells you what arguments you're missing. - JVM startup is annoyingly slow for simple CLI tools.
- RIIR, but in good spirit! I think the tool where the inspiration came from was already a fantastic idea.
- But most importantly, I just needed a project to learn Rust! :)