Philiprehberger.BackgroundTaskQueue
0.1.7
dotnet add package Philiprehberger.BackgroundTaskQueue --version 0.1.7
NuGet\Install-Package Philiprehberger.BackgroundTaskQueue -Version 0.1.7
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="Philiprehberger.BackgroundTaskQueue" Version="0.1.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Philiprehberger.BackgroundTaskQueue" Version="0.1.7" />
<PackageReference Include="Philiprehberger.BackgroundTaskQueue" />
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 Philiprehberger.BackgroundTaskQueue --version 0.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Philiprehberger.BackgroundTaskQueue, 0.1.7"
#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 Philiprehberger.BackgroundTaskQueue@0.1.7
#: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=Philiprehberger.BackgroundTaskQueue&version=0.1.7
#tool nuget:?package=Philiprehberger.BackgroundTaskQueue&version=0.1.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Philiprehberger.BackgroundTaskQueue
Simple in-memory background job queue for ASP.NET Core with concurrency control.
Installation
dotnet add package Philiprehberger.BackgroundTaskQueue
Usage
Register the queue
using Philiprehberger.BackgroundTaskQueue;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddBackgroundTaskQueue(options =>
{
options.MaxConcurrency = 4;
options.MaxQueueSize = 100;
options.OnError = ex => Console.Error.WriteLine($"Background task failed: {ex}");
});
var app = builder.Build();
app.Run();
Enqueue work from a controller
using Microsoft.AspNetCore.Mvc;
using Philiprehberger.BackgroundTaskQueue;
[ApiController]
[Route("api/[controller]")]
public class ReportsController : ControllerBase
{
private readonly IBackgroundTaskQueue _queue;
public ReportsController(IBackgroundTaskQueue queue) => _queue = queue;
[HttpPost]
public IActionResult Generate()
{
_queue.Enqueue(async ct =>
{
// Long-running work here
await Task.Delay(5000, ct);
}, name: "generate-report");
return Accepted();
}
}
Default options (sequential, unbounded)
builder.Services.AddBackgroundTaskQueue();
API
IBackgroundTaskQueue
| Member | Description |
|---|---|
Enqueue(Func<CancellationToken, Task>) |
Adds a work item to the queue |
Enqueue(Func<CancellationToken, Task>, string?) |
Adds a named work item to the queue |
DequeueAsync(CancellationToken) |
Waits for and returns the next work item |
Count |
Number of items currently in the queue |
BackgroundQueueOptions
| Property | Default | Description |
|---|---|---|
MaxConcurrency |
1 |
Maximum concurrent work items |
MaxQueueSize |
0 |
Max queue capacity (0 = unbounded) |
OnError |
null |
Callback invoked when a work item throws |
ServiceCollectionExtensions
| Method | Description |
|---|---|
AddBackgroundTaskQueue(Action<BackgroundQueueOptions>?) |
Registers queue and hosted service |
Development
dotnet build src/Philiprehberger.BackgroundTaskQueue.csproj --configuration Release
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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.
-
net8.0
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.