@yogaraj-saravanan/kafka-utils
v1.7.0
Published
Reusable Kafka producer and consumer utilities using kafkajs.
Maintainers
Readme
Kafka Utils
A lightweight utility library for Kafka using kafkajs.
Provides reusable KafkaProducer and KafkaConsumer classes.
🚀 Installation
npm install kafka-utilsMake sure Kafka is running before using this library.
📦 Usage
KafkaProducer Example
import { KafkaProducer } from "kafka-utils";
const clientId = "order-service";
const brokers = ["localhost:9092"];
const producer = new KafkaProducer(clientId, brokers);
await producer.connect();
await producer.send("orders-topic", [{ value: "New order created" }]);
await producer.disconnect();KafkaConsumer Example
import { KafkaConsumer } from "kafka-utils";
const clientId = "billing-service";
const brokers = ["localhost:9092"];
const groupId = "billing-group";
const consumer = new KafkaConsumer(clientId, brokers, groupId);
await consumer.connect("orders-topic", async ({ message }) => {
console.log("Received:", message.value?.toString());
});⚙️ Kafka Requirements
This package does not start Kafka. You must ensure Kafka is already running, either:
- Locally using Docker
- Remotely via a cloud service like Confluent Cloud
- On your infrastructure
🐳 Kafka Setup with Docker Compose
To run Kafka and Zookeeper locally, copy and paste the following into a docker-compose.yml file:
version: "2"
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.2.1
container_name: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:7.2.1
container_name: kafka
ports:
- "9092:9092"
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1Then run:
docker-compose up -dThis will:
- Start Zookeeper on port
2181 - Start Kafka on port
9092
📁 Exports
import { KafkaProducer, KafkaConsumer } from "kafka-utils";🛠 Requirements
- Kafka broker running (locally or remotely)
- Node.js v14+ recommended
📃 License
MIT © Yogaraj Saravanan
