UNPKG

digitaltwin-core

Version:

Minimalist framework to collect and handle data in a Digital Twin project

87 lines 2.51 kB
import type { QueueOptions, ConnectionOptions } from 'bullmq'; import { Queue } from 'bullmq'; /** * Configuration options for the Queue Manager */ export interface QueueConfig { /** Number of workers for collectors (data collection) */ collectorWorkers?: number; /** Number of workers for harvesters (data processing) */ harvesterWorkers?: number; /** Redis connection configuration */ redis?: ConnectionOptions; /** Advanced options for each queue type */ queueOptions?: { collectors?: Partial<QueueOptions>; harvesters?: Partial<QueueOptions>; priority?: Partial<QueueOptions>; uploads?: Partial<QueueOptions>; }; } /** * Queue Manager - Manages BullMQ queues for different component types * * Handles three types of queues: * - Collector queue: High priority, fast execution for data collection * - Harvester queue: Medium priority, slower processing for data transformation * - Priority queue: Urgent/manual jobs with highest priority * * @example * ```typescript * const queueManager = new QueueManager({ * redis: { host: 'localhost', port: 6379 }, * collectorWorkers: 3, * harvesterWorkers: 2 * }) * * await queueManager.close() * ``` */ export declare class QueueManager { #private; readonly collectorQueue: Queue; readonly harvesterQueue: Queue; readonly priorityQueue: Queue; readonly uploadQueue: Queue; /** * Creates a new Queue Manager instance * @param config - Queue configuration options */ constructor(config?: QueueConfig); /** * Closes all queues gracefully * @returns Promise that resolves when all queues are closed */ close(): Promise<void>; /** * Gets statistics for all queues * @returns Object containing stats for each queue type */ getQueueStats(): Promise<{ collectors: { waiting: number; active: number; completed: number; failed: number; }; harvesters: { waiting: number; active: number; completed: number; failed: number; }; priority: { waiting: number; active: number; completed: number; failed: number; }; uploads: { waiting: number; active: number; completed: number; failed: number; }; }>; } //# sourceMappingURL=queue_manager.d.ts.map