UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

43 lines 1.52 kB
import KafkaJS from "kafkajs"; import { lz4Codec } from "../codec/lz4-codec.js"; const { Kafka, CompressionTypes, CompressionCodecs } = KafkaJS; let registeredLz4CodecFn; const ensureLz4CodecRegistered = (codecFn) => { const resolvedCodecFn = codecFn ?? lz4Codec; if (!registeredLz4CodecFn) { CompressionCodecs[CompressionTypes.LZ4] = () => resolvedCodecFn; registeredLz4CodecFn = resolvedCodecFn; return; } if (registeredLz4CodecFn !== resolvedCodecFn) { throw new Error("LZ4 codec is already registered with a different implementation"); } }; class KTKafkaBroker { _kafka; constructor(params) { const clientId = params.kafkaSettings.clientId ?? `consumer-${Date.now()}`; const { brokerUrls, connectionTimeout } = params.kafkaSettings; const { compressionCodec } = params.kafkaSettings; if (!compressionCodec || compressionCodec.codecType === CompressionTypes.LZ4) { ensureLz4CodecRegistered(compressionCodec?.codecFn); } if (!Array.isArray(brokerUrls)) { throw new Error("KafkaBrokerUrls must be an array"); } this._kafka = new Kafka({ clientId, brokers: brokerUrls, connectionTimeout, ...params.pureConfig, }); } encode(message) { return JSON.stringify(message); } decode(message) { return JSON.parse(message); } } export { KTKafkaBroker }; //# sourceMappingURL=kafka-broker.js.map