A stateless server that implements the Apache Kafka® API, with pluggable storage (PostgreSQL, SQLite, S3, memory)
The full documentation is at docs.nisshi.io. This README and the pages in docs describe main, which can be ahead of the latest release.
Nisshi implements the Apache Kafka® API, so applications can use their Kafka clients without a cluster of Kafka brokers to run. Nisshi brokers are stateless: they keep no data of their own, and the storage engine holds topics, messages and consumer groups, so brokers that share an engine can each answer any request.
Features:
- Implements the Apache Kafka® API
- Available with PostgreSQL, libSQL, S3 or memory storage engines
- Topics validated by JSON Schema, Apache Avro or Protocol buffers can be written as Apache Iceberg or Delta Lake tables
Nisshi is now part of Solace. Its creator, Peter Morgan, is a key member of the Solace team that works on it. GOVERNANCE says how the project is run.
The license stays Apache 2.0, and what is open stays open.
Nisshi OSS is provided as-is, with no warranty and no Solace Support commitment. Ask questions in the Solace community. Report security issues through SECURITY.
Note
Want the quickest way to start using Nisshi? Use a prebuilt binary. See Get Started with Nisshi.
Other ways to run Nisshi, both described in Install and run Nisshi:
- Docker Compose — if you have Docker installed. See Running with Docker Compose.
- cargo — if you have Rust installed, or there is no prebuilt binary for your platform, such as Windows or an Intel Mac. See Installing with crates.io.
To see Nisshi write topics to a data lake, try the examples for pyiceberg, Apache Spark, or Delta Lake.
Nisshi is a single statically linked binary containing the following, described in Commands:
- broker — an Apache Kafka®-compatible broker and schema registry
- topic — create, list or delete topics (development and demos; plaintext only: no TLS or SASL)
- user — create, list or delete users (development and demos; plaintext only: no TLS or SASL)
- cat — consume or produce Avro, JSON or Protobuf messages to a topic (development and demos; plaintext only: no TLS or SASL)
- generator — generate fake messages for schema-backed topics (development and demos; plaintext only: no TLS or SASL)
- perf — measure produce and consume throughput against a broker (development and demos; plaintext only: no TLS or SASL)
- proxy — an Apache Kafka®-compatible proxy (development and demos, not production)
- Get Started with Nisshi — start a broker from a prebuilt binary, and send and read a message
- Install and run Nisshi — which release to use, installing with cargo, and running with Docker Compose
- Storage options — the storage engines, their status, and running them with Docker Compose
- Commands — the
broker,topic,catandproxycommands - Topic configuration — the topic settings Nisshi supports
- Schema registry — validating topics with Avro, JSON Schema or Protocol Buffers
- Securing a broker — TLS, outbound TLS, and SASL SCRAM authentication
- Metrics — exporting metrics over OTLP
- Compatibility and feature status — the Kafka APIs, storage engine features and Kafka clients that are supported
- Architecture — how the crates fit together, for contributors
- CHANGELOG — what changed in each release, and the upgrade notes
Nisshi implements the Apache Kafka® wire protocol, generated from the Apache Kafka 3.9.1
message descriptors in nisshi-sans-io/message. Clients on
Kafka 4.x negotiate down to those protocol versions. Idempotent producers work. Transactions are
not supported, so Kafka Streams with exactly_once_v2 fails.
For the details, see Compatibility and feature status. It lists which Kafka APIs and topic configurations each storage engine supports, and the client versions CI tests along with their known gaps. Please raise an issue if a client or Kafka version you rely on behaves differently.
Please raise an issue if you encounter a problem.
Contributions are welcome. See CONTRIBUTING for how to get started, and GOVERNANCE for how decisions get made. Everyone participating is expected to follow our Code of Conduct. To report a security vulnerability, see SECURITY.
Nisshi is licensed under Apache 2.0.
Apache, Apache Kafka, Kafka and the other Apache project names in this document are trademarks of The Apache Software Foundation.