// the find
twmb/franz-go
franz-go is a feature complete, pure Go library for Kafka from 0.8.0 through 4.2+. Producing, consuming, transacting, administrating, etc.
franz-go is a pure Go Kafka client that takes 'implement everything' seriously — it tracks every client-facing KIP from Kafka 0.8.0 through 4.2+ and actually supports them. If you've been fighting Sarama's gaps or librdkafka's CGo requirements, this is the grown-up alternative. Redpanda uses it in their own console, which is about as strong an endorsement as a Kafka client gets.
1. The KIP support table isn't padding — 100+ KIPs tracked and implemented, including full Exactly-Once-Semantics with idempotent and transactional producers. Most third-party Kafka clients either skip EOS entirely or implement it incorrectly. 2. kfake is a full in-memory Kafka implementation for unit/integration testing. You can write meaningful tests without spinning up a broker, and it implements enough of the wire protocol that the tests actually catch real bugs. 3. Pure Go, no CGo. No librdkafka linking hell, cross-compilation works, Docker images stay small. The performance is competitive too — they ship a benchmark harness that compares against Sarama and confluent-kafka-go. 4. The hook system for metrics and logging is the right abstraction: zero dependencies in the core library, plug in prometheus or zap via optional sub-modules. You pay for what you use.
1. KIP-848 (next-gen consumer group protocol) is implemented but deliberately hidden behind an opt-in flag — broker-side issues were found at release time, so it didn't ship enabled. That's the correct call, but if you upgrade to v1.19+ expecting the new rebalance behavior, you won't get it without knowing to look for the flag. 2. The configuration surface is enormous. Getting EOS right, tuning transaction timeouts, or configuring rack-aware assignment requires you to understand Kafka internals, not just the API. The docs are good but they won't save you from footguns if you treat Kafka like a queue. 3. kfake has documented gaps — there's a skipped_features file listing what's unimplemented. If your test hits a missing API, you're falling back to a real broker with no warning, which defeats the point. 4. The community is much smaller than Sarama's. Fewer Stack Overflow answers, fewer production war stories online, so when you hit a subtle offset commit edge case at 2am, you're reading source code.