import { IrisRequest } from '@/types/models/base'; import { Logger } from '@/utils/logger'; export interface QueuedMessage { id: string; data: IrisRequest; connectionId: string; timestamp: number; retries: number; priority: number; } export interface MessageQueueOptions { maxConcurrent?: number; maxQueueSize?: number; maxRetries?: number; retryDelay?: number; processingTimeout?: number; priorityEnabled?: boolean; } export interface MessageQueueStats { queued: number; processing: number; completed: number; failed: number; dropped: number; avgProcessingTime: number; } /** * 비동기 메시지 큐 시스템 * 메시지를 큐에 넣고 여러 워커가 병렬로 처리 */ export declare class AsyncMessageQueue { private queue; private processing; private logger; private options; private messageHandler?; private isRunning; private messageIdCounter; private stats; constructor(logger: Logger, options?: MessageQueueOptions); /** * 메시지 핸들러 설정 */ setMessageHandler(handler: (data: IrisRequest, connectionId: string) => Promise): void; /** * 큐 시작 */ start(): void; /** * 큐 중지 */ stop(): void; /** * 메시지 추가 */ enqueue(data: IrisRequest, connectionId: string, priority?: number): boolean; /** * 큐 처리 (메인 루프) */ private processQueue; /** * 단일 메시지 처리 */ private processMessage; /** * 통계 가져오기 */ getStats(): MessageQueueStats; /** * 큐 비우기 */ clear(): void; /** * 현재 큐 크기 가져오기 */ get size(): number; /** * 현재 처리 중인 메시지 수 */ get processingCount(): number; /** * 큐가 비어있는지 확인 */ get isEmpty(): boolean; private sleep; } //# sourceMappingURL=AsyncMessageQueue.d.ts.map