@aks007/kafka-js
Version:
NodeBase code for basic tools
54 lines (48 loc) • 2.25 kB
TypeScript
import { Logger } from 'winston';
import { Kafka, Producer, logLevel, Consumer } from 'kafkajs';
type Callback1Void<Input> = (input: Input) => void;
declare abstract class BaseKafkaService<Child> {
protected _logger: Logger | undefined;
protected _host: string | undefined;
protected _pollTimeInterval: number | undefined;
protected _pollTimeout: number | undefined;
protected _numConsumers: number | undefined;
protected _topic: string | undefined;
protected _group: string | undefined;
protected _clientId: string | undefined;
protected kafka: Kafka;
protected producer: Producer | undefined;
protected onNewMessageReceived: ((message: Record<string, string[]>) => void) | undefined;
private consumers;
protected constructor(host: string, clientId: string);
setLogger(value: Logger): Child;
setPollTimeInterval(value: number | undefined): Child;
clientId(value: string | undefined): Child;
setPollTimeout(value: number | undefined): Child;
setNumConsumers(value: number | undefined): Child;
setTopic(value: string | undefined): Child;
setGroup(value: string | undefined): Child;
disconnect(): void;
toWinstonLogLevel: (level: logLevel) => "error" | "warn" | "info" | "debug";
init(): Promise<void>;
setUp(): void;
protected abstract getThis(): Child;
protected initSender(): Promise<void>;
protected startPolling(): void;
protected _poll(consumer: Consumer): Promise<void>;
protected setOnMessageReceived(handler: Callback1Void<Record<string, string[]>>): Promise<void>;
protected initConsumer(): Promise<void>;
}
interface QueueInterface<Entry> {
send(key: string, message: Entry | Entry[]): void;
init(): void;
deInit(): void;
}
declare class KafkaQueueService<Entry> extends BaseKafkaService<KafkaQueueService<Entry>> implements QueueInterface<Entry> {
constructor(host: string, clientId: string);
send(key: string, message: Entry | Entry[]): Promise<void>;
deInit(): void;
onReceive(handler: Callback1Void<Record<string, Entry[]>>): Promise<KafkaQueueService<Entry>>;
protected getThis(): KafkaQueueService<Entry>;
}
export { BaseKafkaService, KafkaQueueService, type QueueInterface };