Soenneker.Utils.RateLimiting.Factory 4.0.1171

Prefix Reserved
dotnet add package Soenneker.Utils.RateLimiting.Factory --version 4.0.1171
                    
NuGet\Install-Package Soenneker.Utils.RateLimiting.Factory -Version 4.0.1171
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Soenneker.Utils.RateLimiting.Factory" Version="4.0.1171" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Soenneker.Utils.RateLimiting.Factory" Version="4.0.1171" />
                    
Directory.Packages.props
<PackageReference Include="Soenneker.Utils.RateLimiting.Factory" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Soenneker.Utils.RateLimiting.Factory --version 4.0.1171
                    
#r "nuget: Soenneker.Utils.RateLimiting.Factory, 4.0.1171"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Soenneker.Utils.RateLimiting.Factory@4.0.1171
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Soenneker.Utils.RateLimiting.Factory&version=4.0.1171
                    
Install as a Cake Addin
#tool nuget:?package=Soenneker.Utils.RateLimiting.Factory&version=4.0.1171
                    
Install as a Cake Tool

alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

alternate text is missing from this package README image Soenneker.Utils.RateLimiting.Factory

Provides one shared RateLimitingExecutor per string ID.

Installation

dotnet add package Soenneker.Utils.RateLimiting.Factory

Registration

using Soenneker.Utils.RateLimiting.Factory.Registrars;

services.AddRateLimitingFactoryAsSingleton();

Singleton registration is the normal choice when an ID represents an application-wide upstream limit. Scoped registration creates a separate dictionary and separate executors in every scope, so requests in different scopes do not throttle one another.

Get and use a keyed executor

RateLimitingExecutor executor = await factory.Get(
    id: "vendor-api",
    interval: TimeSpan.FromSeconds(2),
    cancellationToken);

ApiResponse response = await executor.Execute(
    token => apiClient.Send(token),
    cancellationToken);

The ID is the cache key. Concurrent calls for the same ID receive the same executor; different IDs have independent locks and schedules. The interval supplied when an ID is first created wins. Later calls for that ID return the existing executor and do not reconfigure it, so use stable IDs and pass a consistent interval.

The factory owns cached executors. Callers should use them but must not dispose or permanently cancel them. The cancellation token passed to Get applies while obtaining the cached value; pass the operation token again to Execute for waiting and delegate cancellation. GetSync provides the same cache semantics for synchronous acquisition.

Remove an executor

bool removed = await factory.Remove("vendor-api");

Removal coordinates with in-flight creation, removes the keyed executor, and disposes it. Any caller still holding that instance now has a canceled/disposed executor, so remove only after its users have been coordinated. A later Get for the same ID creates a new executor and establishes a new interval. Remove returns false when no value was present; RemoveSync is the synchronous equivalent without a result.

Disposing the factory removes and disposes all cached executors. Let dependency injection own that lifetime. Because IDs remain cached until removal or factory disposal, avoid unbounded IDs derived from individual requests or users.

For execution spacing, delegate forms, and terminal cancellation behavior, see Soenneker.Utils.RateLimiting.Executor.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Soenneker.Utils.RateLimiting.Factory:

Package Downloads
Soenneker.Validators.Yahoo.Exists

A validation module checking for Yahoo account existence

Soenneker.Validators.Gmail.Exists

A validation module checking for Gmail account existence

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.1171 104 9/5/2026
4.0.1170 120 9/4/2026
4.0.1167 80 9/4/2026
4.0.1166 60 9/4/2026
4.0.1164 104 9/3/2026
4.0.1163 129 9/1/2026
4.0.1162 165 8/31/2026
4.0.1161 111 8/31/2026
4.0.1160 147 8/31/2026
4.0.1159 143 8/31/2026
4.0.1158 115 8/31/2026
4.0.1157 91 8/31/2026
4.0.1156 119 8/30/2026
4.0.1155 80 8/30/2026
4.0.1154 139 8/30/2026
4.0.1153 99 8/30/2026
4.0.1152 155 8/30/2026
4.0.1151 99 8/30/2026
4.0.1150 159 8/30/2026
4.0.1149 85 8/29/2026
Loading failed

Update dependency Soenneker.Dictionaries.Singletons to 4.0.94 (#1895)