// the find
Blizzard/node-rdkafka
Node.js bindings for librdkafka
Node.js bindings for librdkafka, the C library that most serious Kafka clients are built on top of. Gives you near-native Kafka performance from Node by calling into the C library via N-API rather than reimplementing the protocol. If you need high-throughput Kafka in Node, this is the realistic option.
Wraps librdkafka 2.12.0, which means you get all the battle-tested features — transactions, exactly-once semantics, SASL/SSL, custom partitioners — without waiting for a JS reimplementation to catch up. Both a streaming API (plays well with Node's readable/writable stream ecosystem) and a lower-level standard API are available, so you're not forced into one abstraction. The AdminClient covers topic creation, deletion, and partition scaling, which saves you from dropping into a separate admin tool for basic ops. Active maintenance: librdkafka is kept current and the CI runs real integration tests against a live broker.
Native addon means npm install requires a C++ toolchain — this bites you in Docker, CI pipelines, and any Alpine-based image without extra setup. Windows support is explicitly second-class: it pulls a NuGet binary instead of compiling from source, is untested in production, and the maintainer says so directly. The UV_THREADPOOL_SIZE constraint is a real gotcha for flowing-mode consumption: running multiple consumers will starve other async I/O in the process without manual tuning. No Promise or async/await API — everything is callbacks and EventEmitter, which means wrapping it yourself if your codebase has moved past the callback era.