finds.dev← search

// the find

lovoo/goka

★ 2,533 · Go · BSD-3-Clause · updated Feb 2026

Goka is a compact yet powerful distributed stream processing library for Apache Kafka written in Go.

Goka is a stream processing library for Go that wraps Kafka consumer groups with a built-in state table, using Kafka itself as the state store. It sits between raw Sarama and a full Kafka Streams implementation — less boilerplate than DIY, less magic than Flink. Best fit for Go shops already on Kafka who want keyed stateful processing without running a separate state store.

Built-in tester package lets you unit test processor logic without a running Kafka cluster — this is the biggest practical win and most Kafka libs skip it entirely. State is stored in compacted Kafka topics, so there's no external state store to operate or back up. The monitoring web UI is included out of the box, not an afterthought. Pluggable storage layer means you can swap LevelDB for Redis or an in-memory map without changing your processor code.

Sarama as the underlying Kafka client is a real risk — IBM's stewardship has been inconsistent and the Go Kafka client ecosystem is fragmented; confluent-kafka-go or franz-go are stronger foundations today. At-least-once semantics only, no exactly-once, which matters more than the docs acknowledge for financial or deduplication-sensitive workloads. 2,533 stars and 184 forks after years in production suggests a narrow user base; the wiki is sparse and 'check the wiki for tips' covering critical config like log compaction is a bad sign. The global config pattern (ReplaceGlobalConfig) is a testing footgun when running multiple processors in the same process.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →