Enviar y recibir mensajes con Apache Kafka en Node.js

Paso 1: Instale la Biblioteca Kafka para Node.js

Abra un terminal en el Node.js directorio de su proyecto.

Ejecute el siguiente comando para instalar la kafkajs biblioteca, una Node.js biblioteca para Apache Kafka: npm install kafkajs.

Paso 2: Enviar mensajes con Producer en Node.js

Importe la kafkajs biblioteca y defina la Kafka Broker configuración:

const { Kafka } = require('kafkajs');  
  
const kafka = new Kafka({  
  clientId: 'your-client-id',  
  brokers: ['broker1:port1', 'broker2:port2'], // Replace with actual addresses and ports  
});  

Cree una producer para enviar mensajes y envíe un mensaje a topic:

const producer = kafka.producer();  
  
const sendMessage = async() => {  
  await producer.connect();  
  await producer.send({
    topic: 'your-topic',  
    messages: [{ value: 'Hello Kafka!' }],  
  });  
  await producer.disconnect();  
};  
  
sendMessage();  

Paso 3: recibir mensajes con Consumer en Node.js

Importe la kafkajs biblioteca y defina la Kafka Broker configuración(si aún no lo ha hecho):

const { Kafka } = require('kafkajs');  
  
const kafka = new Kafka({  
  clientId: 'your-client-id',  
  brokers: ['broker1:port1', 'broker2:port2'], // Replace with actual addresses and ports  
});  

Cree un consumer para recibir mensajes de un específico topic:

const consumer = kafka.consumer({ groupId: 'your-group-id' });  
  
const consumeMessages = async() => {  
  await consumer.connect();  
  await consumer.subscribe({ topic: 'your-topic', fromBeginning: true });  
  
  await consumer.run({  
    eachMessage: async({ topic, partition, message }) => {  
      console.log(`Received message: ${message.value}`);  
    },  
  });  
};  
  
consumeMessages();  

Nota: Reemplace valores como 'your-client-id', 'broker1:port1', 'your-topic' y 'your-group-id' con la información real de su proyecto.

Asegúrese de consultar la documentación oficial de Apache Kafka y la kafkajs biblioteca para obtener más información sobre las opciones de configuración y las funcionalidades.