UNPKG

@gati-framework/runtime

Version:

Gati runtime execution engine for running handler-based applications

72 lines 2.22 kB
/** * @module runtime/queue-fabric * @description In-memory Queue Fabric implementation with pub/sub and backpressure */ import type { QueueFabric, QueueFabricConfig, MessageHandler, Subscription, PublishOptions, BackpressureStatus, QueueFabricStats } from './types/queue-fabric.js'; /** * In-memory Queue Fabric implementation * * Provides topic-based pub/sub messaging with: * - At-least-once and exactly-once delivery semantics * - Backpressure enforcement * - Result delivery to originating request contexts * - Priority-based message ordering * - TTL-based message expiration */ export declare class InMemoryQueueFabric implements QueueFabric { private queue; private subscriptions; private requestContexts; private deliveredMessages; private processing; private shutdownRequested; private processingInterval?; private config; private stats; constructor(config?: QueueFabricConfig); /** * Publish a message to a topic */ publish<T = any>(topic: string, payload: T, options?: PublishOptions): Promise<void>; /** * Subscribe to a topic */ subscribe<T = any>(topic: string, handler: MessageHandler<T>): Subscription; /** * Enforce backpressure when capacity is reached */ enforceBackpressure(threshold: number): void; /** * Deliver result to originating request context */ deliverResult(requestId: string, result: any): Promise<void>; /** * Get current backpressure status */ getBackpressureStatus(): BackpressureStatus; /** * Get queue fabric statistics */ getStats(): QueueFabricStats; /** * Shutdown the queue fabric */ shutdown(): Promise<void>; /** * Register a result handler for a request context */ registerResultHandler(requestId: string, handler: (result: any) => void): void; /** * Start the message processing loop */ private startProcessing; /** * Process messages in the queue */ private processQueue; } /** * Create a new Queue Fabric instance */ export declare function createQueueFabric(config?: QueueFabricConfig): QueueFabric; //# sourceMappingURL=queue-fabric.d.ts.map