// the find
lovoo/goka
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.