n8n
Version:
n8n Workflow Automation Tool
50 lines (49 loc) • 2.08 kB
TypeScript
import { Logger } from '@n8n/backend-common';
import type { InstanceAiEvent } from '@n8n/api-types';
import { GlobalConfig } from '@n8n/config';
import type { InstanceAiEventBus, StoredEvent } from '@n8n/instance-ai';
import { InstanceSettings } from 'n8n-core';
import { Publisher } from '../../../scaling/pubsub/publisher.service';
import { DurableEventLog } from './durable-event-log';
export declare class InProcessEventBus implements InstanceAiEventBus {
private readonly logger;
private readonly instanceSettings;
private readonly publisher;
private readonly eventLog;
private readonly emitter;
private readonly store;
private readonly sizeBytes;
private readonly lastLocalId;
private readonly pendingByThread;
private readonly inFlightByThread;
private readonly drainingThreads;
private readonly seqKeyPrefix;
private readonly durableLogEnabled;
constructor(logger: Logger, instanceSettings: InstanceSettings, publisher: Publisher, eventLog: DurableEventLog, globalConfig: GlobalConfig);
publish(threadId: string, event: InstanceAiEvent): void;
private onDrained;
private cacheSequencedEvent;
private drainQueue;
private takePending;
private assignSequenceBlock;
private getRedisClient;
private seqKey;
private bumpLocalHighWaterMark;
private storeAndEmit;
private insertById;
private relayToSiblings;
handleRelayInstanceAiEvent({ threadId, storedEvent, }: {
threadId: string;
storedEvent: StoredEvent;
}): void;
subscribe(threadId: string, handler: (storedEvent: StoredEvent) => void): () => void;
hasSubscribers(threadId: string): boolean;
getEventsAfter(threadId: string, afterId: number): StoredEvent[];
getEventsForRun(threadId: string, runId: string): InstanceAiEvent[];
getEventsForRuns(threadId: string, runIds: string[]): InstanceAiEvent[];
getNextEventId(threadId: string): Promise<number>;
clearThread(threadId: string): void;
clear(): void;
private evictIfNeeded;
private getOrCreateStore;
}