digitaltwin-core
Version:
Minimalist framework to collect and handle data in a Digital Twin project
87 lines • 2.51 kB
TypeScript
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