Loading video...

Video Failed to Load

Go Home

Why we built a new Kafka client for Node.js The Node.js world needs better tools. Apache Kafka is vital for real-time data. It powers many businesses, especially in Fintech and Media. These fields see heavy data usage and need reliable solutions.

31,029 views • 1 year ago •via X (Twitter)

11 Comments

Matteo Collina's profile picture
Matteo Collina1 year ago

Node.js developers faced a tough choice. They could pick KafkaJS or node-rdkafka: 1) KafkaJS is a pure JS library but is no longer maintained 2) Node-rdkafka, while fast, it struggles with compatibility and worker threads This gap left teams searching for a modern Kafka client.

Matteo Collina's profile picture
Matteo Collina1 year ago

Many of our Platformatic customers asked for a solution. We knew we had to act. Today, we introduce @platformatic /kafka. This new library is built for modern Node.js. It focuses on performance, ease of use, and TypeScript support.

Matteo Collina's profile picture
Matteo Collina1 year ago

In our latest release, we compare @platformatic /kafka with KafkaJS and node-rdkafka. The three libraries offer different experiences. This comes from their age and the structure of node-rdkafka's C++ base. We look closely at how they handle data and their Admin API experience.

Matteo Collina's profile picture
Matteo Collina1 year ago

We run benchmark analysis on all three libraries We tested all three libraries in two common scenarios: consuming and producing data. Our target cluster had three brokers running on Docker. All data was produced and consumed for one topic with three partitions.

Matteo Collina's profile picture
Matteo Collina1 year ago

In the end, the @platformatic/kafka library stands out. Our benchmarks show that it offers better performance with a better developer experience than alternatives. Thanks to the built-in serialization support, TypeScript integration, and a simple API, @platformatic/kafka is the ideal choice. It helps devs build strong and maintainable Kafka applications in Node.js.

Matteo Collina's profile picture
Matteo Collina1 year ago

Read the full release here:

Shayan's profile picture
Shayan1 year ago

This is very clean! Thank you.

Matt – Trigger.dev's profile picture
Matt – Trigger.dev1 year ago

@matteocollina I’ve been meaning to ask you for a while. How would you parse large JSON without blocking the event loop in Node? Use a stream parser?

Matteo Collina's profile picture
Matteo Collina1 year ago

It really depends what you need to do with it. One option is to just send the whole payload to a worker thread and process it there. Another option is to use simdjson and only extract the fields you need.

Arjun's profile picture
Arjun1 year ago

The API is really nice! Awesome work!

Matteo Collina's profile picture
Matteo Collina1 year ago

Thanks!

Related Videos