@gati-framework/runtime
Version:
Gati runtime execution engine for running handler-based applications
72 lines • 2.22 kB
TypeScript
/**
* @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