I am using Nodejs package for Kafka consumer. I have 100 topic each having 1 partition.
const { Kafka, logLevel } = require("kafkajs");
const kafka = new Kafka({
logLevel: logLevel.INFO,
clientId: "kafka9845",
brokers:["90.45.78.123"],
connectionTimeout:30000,
sessionTimeout:30000,
requestTimeout:30000,
heartbeatInterval:10000,
retry: {
initialRetryTime:5000,
retries:200
}
});
const topicGroups = ["topic1","topic2",....];
const kafkaConsumer = kafka.consumer({groupId: 'kafkaConsumer', fromBegining:true});
const funKafkaConsumer = async ( kafkaConsumer ) => {
await kafkaConsumer.subscribe({ topics: topicGroups });
await kafkaConsumer.run({
autoCommit: false,
eachMessage: async (task) => {
console.log(task);
await kafkaConsumer.commitOffsets([{topic: task.topic, offset : (Number(task.message.offset) +1).toString()}])
}
});
}
kafkaConsumer.on('consumer.crash', async (payload) => {
try {
kafkaConsumer.disconnect();
} catch(error) {
} finally {
setTimeout( async () => {
await kafkaConsumer.connect();
funKafkaConsumer(kafkaConsumer).catch(console.error);
}, 5000);
}
});
const funConnect = () => {
kafkaConsumer.connect();
funKafkaConsumer(kafkaConsumer).catch(console.error);
}
funConnect();
process.on('SIGINT', function () {
kafkaConsumer.disconnect();
});
I am using "kafkajs":"^2.0.0" and "kafka-node":"^5.0.0"
Every 3 minute we are producing message inside different topics
Problem: I have analysis message consumer processing in queue way.
Requirement: How can make parallel message consuming.