Soenneker.Utils.RateLimiting.Factory 4.0.1159

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Soenneker.Utils.RateLimiting.Factory --version 4.0.1159
                    
NuGet\Install-Package Soenneker.Utils.RateLimiting.Factory -Version 4.0.1159
                    
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.1159" />
                    
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.1159" />
                    
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.1159
                    
#r "nuget: Soenneker.Utils.RateLimiting.Factory, 4.0.1159"
                    
#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.1159
                    
#: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.1159
                    
Install as a Cake Addin
#tool nuget:?package=Soenneker.Utils.RateLimiting.Factory&version=4.0.1159
                    
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.1160 0 8/31/2026
4.0.1159 0 8/31/2026
4.0.1158 42 8/31/2026
4.0.1157 37 8/31/2026
4.0.1156 53 8/30/2026
4.0.1155 32 8/30/2026
4.0.1154 59 8/30/2026
4.0.1153 44 8/30/2026
4.0.1152 73 8/30/2026
4.0.1151 44 8/30/2026
4.0.1150 77 8/30/2026
4.0.1149 37 8/29/2026
4.0.1148 48 8/29/2026
4.0.1147 81 8/29/2026
4.0.1146 148 8/26/2026
4.0.1145 87 8/26/2026
4.0.1144 281 8/21/2026
4.0.1143 276 8/18/2026
4.0.1142 359 8/13/2026
4.0.1141 101 8/12/2026
Loading failed

Update dependency Soenneker.Utils.RateLimiting.Executor to 4.0.572 (#1879)