-
Notifications
You must be signed in to change notification settings - Fork 16
Dashboard
Brian Lehnen edited this page Apr 9, 2026
·
7 revisions
The Dashboard API is a REST service for monitoring and managing queues across all transports. Built on ASP.NET Core with Swagger/OpenAPI docs included.
- Monitor message counts by status (Waiting, Processing, Error, Processed)
- Inspect message bodies, headers, and configuration
- Detect stale messages via heartbeat tracking
- Manage error messages (view, requeue, delete)
- Edit message bodies, reset stale messages, delete messages
- Query scheduled jobs
- Track active consumers per queue
- Host queue maintenance monitors centrally
- View message history and lifecycle events
- Purge old history records by retention age
- Cancel running messages (cooperative, in-process only)
- Supports all transports: SQL Server, PostgreSQL, SQLite, LiteDb, Redis, Memory
Install the Dashboard API NuGet package:
Install-Package DotNetWorkQueue.Dashboard.ApiYou will also need the transport package(s) for the queues you want to monitor (e.g., DotNetWorkQueue.Transport.SqlServer).
Register the dashboard in your ASP.NET Core application:
using DotNetWorkQueue.Dashboard.Api;
using DotNetWorkQueue.Transport.SqlServer.Basic;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDotNetWorkQueueDashboard(options =>
{
options.EnableSwagger = true;
options.AddConnection<SqlServerMessageQueueInit>(
"Server=myserver;Database=mydb;Trusted_Connection=true;",
conn =>
{
conn.DisplayName = "Production SQL Server";
conn.AddQueue("OrderQueue");
conn.AddQueue("NotificationQueue");
});
});
var app = builder.Build();
app.UseDotNetWorkQueueDashboard();
app.MapControllers();
app.Run();Multiple connections and transports can be registered in a single dashboard instance:
builder.Services.AddDotNetWorkQueueDashboard(options =>
{
options.AddConnection<SqlServerMessageQueueInit>(sqlConnString, conn =>
{
conn.DisplayName = "SQL Server";
conn.AddQueue("OrderQueue");
});
options.AddConnection<RedisQueueInit>(redisConnString, conn =>
{
conn.DisplayName = "Redis";
conn.AddQueue("CacheQueue");
});
});Connections can also be driven from appsettings.json. See the sample project for a full example using configuration binding.
{
"Dashboard": {
"EnableSwagger": true,
"Connections": [
{
"Transport": "SqlServer",
"ConnectionString": "Server=myserver;Database=mydb;Trusted_Connection=true;",
"DisplayName": "Production DB",
"Queues": [ "OrderQueue", "NotificationQueue" ]
}
]
}
}Swagger UI is enabled by default. Once the application is running, navigate to /swagger to explore and test the API endpoints.
- Dashboard Configuration - options, authorization, and interceptor setup
- Dashboard API Reference - full endpoint documentation
- Dashboard UI - Blazor Server web interface
- Dashboard Client - standalone typed C# client and consumer registration
For any issues please use the GitHub issues