UNPKG

nodejs-cloud-taskmq

Version:

Node.js TypeScript library for integrating Google Cloud Tasks with MongoDB/Redis/Memory/Custom for a BullMQ-like queue system. Compatible with NestJS but framework-agnostic.

81 lines (80 loc) 2.24 kB
import { EventEmitter } from 'events'; import { IStateStorageAdapter } from '../interfaces/storage-adapter.interface'; import { CloudTaskMQConfig } from '../interfaces/config.interface'; import { TaskProgress } from '../interfaces/task.interface'; import { ProcessorOptions } from '../decorators/processor.decorator'; import { EventHandlerMetadata } from '../decorators/events.decorator'; import 'reflect-metadata'; /** * Processor registration information */ export interface ProcessorRegistration { instance: any; queueName: string; options: ProcessorOptions; processHandlers: Array<{ methodName: string; name: string; concurrency?: number; handler: Function; }>; eventHandlers: EventHandlerMetadata[]; } /** * Consumer service for processing tasks */ export declare class ConsumerService extends EventEmitter { private readonly config; private readonly storageAdapter; private processors; private activeProcessors; constructor(config: CloudTaskMQConfig, storageAdapter: IStateStorageAdapter); /** * Initialize the consumer service */ initialize(): Promise<void>; /** * Register a processor instance */ registerProcessor(instance: any): void; /** * Process a task received from Cloud Tasks */ processTask(payload: { taskId: string; queueName: string; data: any; attempts: number; maxAttempts: number; chain?: { id: string; index: number; total: number; }; uniquenessKey?: string; }): Promise<any>; /** * Update task progress */ updateTaskProgress(taskId: string, progress: TaskProgress): Promise<void>; /** * Get registered processors */ getProcessors(): Map<string, ProcessorRegistration[]>; /** * Execute task processing using registered processors */ private executeTaskProcessing; /** * Emit task events to registered event handlers */ private emitTaskEvent; /** * Process next task in chain */ private processNextInChain; /** * Close the consumer service */ close(): Promise<void>; }