@awesomeniko/kafka-trail
Version:
A Node.js library for managing message queue with Kafka
33 lines (32 loc) • 1.22 kB
TypeScript
import type { CompressionTypes as KafkaCompressionTypes, KafkaConfig } from "kafkajs";
import KafkaJS from "kafkajs";
import type pino from "pino";
import { lz4Codec } from "../codec/lz4-codec.js";
import type { KafkaClientId } from "../libs/branded-types/kafka/index.js";
type KTKafkaSettings = {
brokerUrls: string[];
clientId: KafkaClientId;
connectionTimeout: number;
compressionCodec?: {
codecType: KafkaCompressionTypes.LZ4;
codecFn?: lz4Codec;
} | {
codecType: Exclude<KafkaCompressionTypes, KafkaCompressionTypes.LZ4>;
codecFn?: never;
};
};
export type KafkaBrokerConfig = {
kafkaSettings: KTKafkaSettings;
pureConfig: Pick<KafkaConfig, "ssl" | "sasl" | "authenticationTimeout" | "reauthenticationThreshold" | "requestTimeout" | "enforceRequestTimeout" | "retry" | "socketFactory" | "logLevel" | "logCreator">;
};
export type KafkaLogger = {
logger: pino.Logger;
};
export type KafkaWithLogger<T extends KafkaBrokerConfig> = T & KafkaLogger;
declare class KTKafkaBroker {
_kafka: KafkaJS.Kafka;
constructor(params: KafkaBrokerConfig);
encode(message: object): string;
decode<T>(message: string): T;
}
export { KTKafkaBroker };