/**
* Queue Prioritization System with Fairness Algorithms
* Implements advanced queue management with priority balancing and fairness controls
*/
///
import { EventEmitter } from "events";
export interface QueueItem {
id: string;
data: T;
priority: number;
timestamp: number;
deadline?: number;
retries: number;
maxRetries: number;
cost: number;
userId: string;
tier: "free" | "basic" | "premium" | "enterprise";
estimatedProcessingTime: number;
metadata: {
source: string;
type: string;
size: number;
complexity: "low" | "medium" | "high" | "critical";
};
}
export interface QueueMetrics {
totalItems: number;
processedItems: number;
failedItems: number;
averageWaitTime: number;
averageProcessingTime: number;
throughputPerSecond: number;
fairnessScore: number;
tierDistribution: Map;
}
export interface FairnessPolicy {
algorithm: "weighted-fair" | "lottery" | "stride" | "proportional-share";
tierWeights: Map;
maxStarvationTime: number;
agingFactor: number;
burstAllowance: number;
}
export interface ProcessingResult {
success: boolean;
result?: T;
error?: string;
processingTime: number;
resourcesUsed: {
cpu: number;
memory: number;
network: number;
};
}
export declare class QueuePrioritizationSystem extends EventEmitter {
private policy;
private queues;
private fairnessManager;
private loadBalancer;
private metricsCollector;
private starvationPreventer;
private adaptiveScheduler;
constructor(policy: FairnessPolicy);
/**
* Add item to appropriate queue with priority calculation
*/
enqueue(item: QueueItem): Promise;
/**
* Dequeue next item based on fairness algorithm
*/
dequeue(): Promise | null>;
/**
* Process item with monitoring and feedback
*/
processItem(item: QueueItem, processor: (data: T) => Promise>): Promise>;
/**
* Get comprehensive queue metrics
*/
getMetrics(): Map;
/**
* Get overall system fairness score
*/
getFairnessScore(): number;
/**
* Adjust fairness policy dynamically
*/
adjustFairnessPolicy(updates: Partial): Promise;
/**
* Optimize queue configuration based on patterns
*/
optimizeConfiguration(): Promise<{
recommendations: string[];
expectedImprovement: number;
changes: any[];
}>;
/**
* Handle burst traffic with adaptive capacity
*/
handleBurst(expectedLoad: number, duration: number): Promise;
private initializeSystem;
private calculateDynamicPriority;
private selectQueue;
private ensureQueue;
private handleProcessingFailure;
private performMaintenance;
private performAging;
private updateFairnessMetrics;
}
declare class PriorityQueue {
private items;
enqueue(item: QueueItem): void;
dequeue(): QueueItem | null;
peek(): QueueItem | null;
isEmpty(): boolean;
size(): number;
ageItems(currentTime: number, threshold: number, agingFactor: number): void;
getItems(): QueueItem[];
}
declare class FairnessManager {
private policy;
private queueProcessingCounts;
private lastProcessingTimes;
private fairnessScores;
constructor(policy: FairnessPolicy);
calculateAdjustment(item: QueueItem): Promise;
selectNextQueue(queues: Map>): Promise;
recordProcessing(queueId: string, item: QueueItem): Promise;
calculateOverallFairnessScore(): number;
updatePolicy(updates: Partial): Promise;
updateMetrics(): Promise;
private weightedFairSelection;
private lotterySelection;
private strideSelection;
private proportionalShareSelection;
private calculateQueueFairnessScore;
}
declare class QueueLoadBalancer {
selectOptimalQueue(queues: Map>): string | null;
}
declare class QueueMetricsCollector {
private enqueueCounts;
private dequeueCounts;
private processingTimes;
private waitTimes;
private failures;
recordEnqueue(item: QueueItem, queueId: string): void;
recordDequeue(item: QueueItem, queueId: string): void;
recordProcessing(item: QueueItem, processingTime: number, success: boolean): void;
recordFailure(item: QueueItem, error: string): void;
getQueueMetrics(queueId: string): QueueMetrics;
}
declare class StarvationPreventer {
private policy;
constructor(policy: FairnessPolicy);
checkAndPrevent(queueId: string): Promise;
checkAllQueues(): Promise;
}
declare class AdaptiveScheduler {
recordOutcome(item: QueueItem, result: ProcessingResult, processingTime: number): Promise;
analyzePerformance(): Promise<{
queueImbalance: number;
fairnessViolations: number;
starvationIncidents: number;
suggestedWeights: Map;
potentialImprovement: number;
}>;
prepareBurstHandling(expectedLoad: number, duration: number): Promise;
restoreNormalOperation(): void;
}
export { PriorityQueue, FairnessManager, QueueLoadBalancer, QueueMetricsCollector, StarvationPreventer, AdaptiveScheduler, };
//# sourceMappingURL=queue-prioritization-system.d.ts.map