Skip to main content
Glama
orneryd

M.I.M.I.R - Multi-agent Intelligent Memory & Insight Repository

by orneryd
rate-limit-queue.md4.78 kB
[**mimir v1.0.0**](../README.md) *** [mimir](../README.md) / orchestrator/rate-limit-queue # orchestrator/rate-limit-queue ## Classes ### RateLimitQueue Defined in: src/orchestrator/rate-limit-queue.ts:28 #### Methods ##### getInstance() > `static` **getInstance**(`config?`, `instanceKey?`): [`RateLimitQueue`](#ratelimitqueue) Defined in: src/orchestrator/rate-limit-queue.ts:89 Get or create a singleton RateLimitQueue instance Supports multiple named instances for different providers/services. If instance exists and config is provided, updates the configuration. ###### Parameters ###### config? `Partial`\<[`RateLimitConfig`](#ratelimitconfig)\> Optional configuration to apply ###### instanceKey? `string` = `'default'` Instance identifier (default: 'default') ###### Returns [`RateLimitQueue`](#ratelimitqueue) RateLimitQueue instance ###### Examples ```ts // Get default instance const limiter = RateLimitQueue.getInstance(); ``` ```ts // Create provider-specific instance const openaiLimiter = RateLimitQueue.getInstance( { requestsPerHour: 10000 }, 'openai' ); ``` ```ts // Update existing instance config const limiter = RateLimitQueue.getInstance( { requestsPerHour: 5000, logLevel: 'verbose' }, 'default' ); ``` ##### setRequestsPerHour() > **setRequestsPerHour**(`newLimit`): `void` Defined in: src/orchestrator/rate-limit-queue.ts:149 Update requestsPerHour dynamically at runtime Useful for adjusting rate limits based on API tier changes or quota updates without restarting the application. ###### Parameters ###### newLimit `number` New requests per hour limit (-1 to bypass) ###### Returns `void` ###### Examples ```ts // Increase limit after tier upgrade limiter.setRequestsPerHour(10000); ``` ```ts // Disable rate limiting limiter.setRequestsPerHour(-1); ``` ```ts // Reduce limit during high load limiter.setRequestsPerHour(1000); ``` ##### enqueue() > **enqueue**\<`T`\>(`execute`, `estimatedRequests`): `Promise`\<`T`\> Defined in: src/orchestrator/rate-limit-queue.ts:190 Enqueue a request for rate-limited execution Queues the request and processes it when rate limit capacity is available. Automatically handles timing, throttling, and queue management. **Bypass Mode**: If `requestsPerHour` is -1, executes immediately without queuing. ###### Type Parameters ###### T `T` ###### Parameters ###### execute () => `Promise`\<`T`\> Async function that makes the API call ###### estimatedRequests `number` = `1` Number of API calls this will make (default: 1) ###### Returns `Promise`\<`T`\> Promise that resolves with the result of execute() ###### Examples ```ts // Simple LLM call const response = await limiter.enqueue(async () => { return await llm.invoke([new HumanMessage('Hello')]); }); ``` ```ts // Agent execution with multiple calls const result = await limiter.enqueue(async () => { return await agent.invoke({ messages }); }, 5); // Estimated 5 API calls ``` ```ts // With error handling try { const data = await limiter.enqueue(async () => { return await fetchUserData(); }); console.log('Data:', data); } catch (error) { console.error('Rate-limited request failed:', error); } ``` ##### getRemainingCapacity() > **getRemainingCapacity**(): `number` Defined in: src/orchestrator/rate-limit-queue.ts:335 Get remaining capacity in current hour ###### Returns `number` ##### getQueueDepth() > **getQueueDepth**(): `number` Defined in: src/orchestrator/rate-limit-queue.ts:344 Get current queue depth ###### Returns `number` ##### getMetrics() > **getMetrics**(): `object` Defined in: src/orchestrator/rate-limit-queue.ts:351 Get metrics for monitoring ###### Returns `object` ###### requestsInCurrentHour > **requestsInCurrentHour**: `number` ###### remainingCapacity > **remainingCapacity**: `number` ###### queueDepth > **queueDepth**: `number` ###### totalProcessed > **totalProcessed**: `number` ###### avgWaitTimeMs > **avgWaitTimeMs**: `number` ###### usagePercent > **usagePercent**: `number` ##### reset() > **reset**(): `void` Defined in: src/orchestrator/rate-limit-queue.ts:378 Reset metrics (for testing) ###### Returns `void` ## Interfaces ### RateLimitConfig Defined in: src/orchestrator/rate-limit-queue.ts:21 #### Properties ##### requestsPerHour > **requestsPerHour**: `number` Defined in: src/orchestrator/rate-limit-queue.ts:22 ##### enableDynamicThrottling > **enableDynamicThrottling**: `boolean` Defined in: src/orchestrator/rate-limit-queue.ts:23 ##### warningThreshold > **warningThreshold**: `number` Defined in: src/orchestrator/rate-limit-queue.ts:24 ##### logLevel > **logLevel**: `"silent"` \| `"normal"` \| `"verbose"` Defined in: src/orchestrator/rate-limit-queue.ts:25

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/orneryd/Mimir'

If you have feedback or need assistance with the MCP directory API, please join our Discord server