background-process-js
Version:
A set of util tools for create background process.
38 lines (37 loc) • 1.31 kB
TypeScript
import { EventEmitter } from "node:events";
export interface ConsumerConfig {
hasDeadQueue: boolean;
maxReceivedMessages: number;
continuouslyPolling: boolean;
timeoutAfterEndingPollingInMilliseconds: number;
}
export declare enum Events {
STOP = "stop",
DEAD = "dead",
CATCH = "catch",
FINISH = "finish",
PROCESS = "process"
}
export type ProcessHook<T> = (data: {
messages: T[];
scalingId: string;
}) => Promise<void>;
export declare abstract class Consumer<MessagesType> extends EventEmitter {
private readonly config;
private stopedProcess;
private processToStop;
private needStopProcess;
private stopPromiseResolver;
constructor(config: ConsumerConfig);
protected abstract getMessages(): Promise<MessagesType[]>;
protected abstract deleteMessages(messages: MessagesType[]): Promise<void>;
protected abstract markAsDeadMessages(messages: MessagesType[]): Promise<void>;
finish(scalingId: string, messages: MessagesType[]): void;
dead(scalingId: string, messages: MessagesType[]): void;
stop(): Promise<unknown>;
catch(err: Error): Promise<void>;
process(hook: ProcessHook<MessagesType>): void;
poll(amount?: number): Promise<void>;
private considerStopedProcess;
private scalablePolling;
}