import kafka from 'kafka-node'; import { logger } from '../utils/logger.js'; const { ConsumerGroup } = kafka; export const createKafkaConsumer = ({ kafkaConfig, onMessage, onError }) => { const kafkaHost = kafkaConfig.brokers.join(','); const consumer = new ConsumerGroup( { kafkaHost, groupId: kafkaConfig.groupId, clientId: kafkaConfig.clientId, fromOffset: 'earliest', protocol: ['roundrobin'], outOfRangeOffset: 'latest', autoCommit: true, sasl: kafkaConfig.sasl }, kafkaConfig.topic ); consumer.on('message', (message) => { onMessage(message).catch((error) => { logger.error('Kafka message handling failed', { error: error?.message }); if (onError) { onError(error, message); } }); }); consumer.on('error', (error) => { logger.error('Kafka consumer error', { error: error?.message }); if (onError) { onError(error); } }); return consumer; };