Skip to content

About

Apache Kafka® compatible broker with S3, PostgreSQL, SQLite, Apache Iceberg and Delta Lake

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1.9k stars

Watchers

10 watching

Forks

Latest commit

 

History

2,051 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Nisshi 🗃️

A stateless server that implements the Apache Kafka® API, with pluggable storage (PostgreSQL, SQLite, S3, memory)


License   Built with Rust  
Docs   Blog   Community  
GitHub stars


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.

What is Nisshi?

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:

About

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.

Get Started

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:

To see Nisshi write topics to a data lake, try the examples for pyiceberg, Apache Spark, or Delta Lake.

Commands

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)

Documentation

Compatibility

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.

Feedback

Please raise an issue if you encounter a problem.

Contributing

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.

License

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.

About

Apache Kafka® compatible broker with S3, PostgreSQL, SQLite, Apache Iceberg and Delta Lake

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1.9k stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages