/// import EventEmitter from 'events'; import { Stream } from '../../Stream'; export interface ISimpleEventEmitterQueueConstructorOptions { name: string; eventId: string; callback: (_event: T) => any; context: any; maxObjectsInQueueForLockStream: number; stream: Stream; eventEmitter: EventEmitter; queryQueuePeriodMillis?: number; logger?: { info: (_msg: string) => void; error: (_msg: string | Error) => void; }; } /** * Реализует СТРОГУЮ последовательность обработки событий, требующих заметного времени выполнения. * На время выполнения может быть заблокирован поток-поставщик событий (stream), * если в буфере накопится более заданного количества. * * Это - альтернатива обработке событий по сигналу из шины данных. * Т.к. обработка "предыдущего" события может затянуться (н-р, требуется обогащение персоны), * и обработка "последующего" события может завершиться раньше. А это не всегда то, что нужно. * Пример: * Цепочка событий: "смена номера тел" -> "начало вывода средств" -> "продолжение вывода средств". * Начинаем отслеживать события только со смены номера. * Если эти первые 2 события расположены близко, случается, что и-за необходимости обогатить 2 персоны для первого события, * второе "добегает" до момента принятия решения об отслеживании раньше. И выпадает. */ export declare class SimpleEventEmitterAsyncQueue { options: ISimpleEventEmitterQueueConstructorOptions; queue: T[]; locked: number; private readonly onEventCallBack; constructor(options: ISimpleEventEmitterQueueConstructorOptions); onEvent(event: T): void; add2Queue(event: T): void; processQueue(): Promise; isLocked(): number; destroy(): void; } //# sourceMappingURL=SimpleEventEmitterAsyncQueue.d.ts.map