Dashboard Web UI
The MassTransit dashboard provides a web UI for inspecting bus topology and runtime state.
The dashboard is transport-aware and only shows features supported by the selected bus and transport:
- Bus overview, endpoint details, and start/stop controls for Receive endpoints
- Topics/Exchanges, Subscriptions/Bindings, and Queue topology views
- Health status for configured buses and endpoints
- State machine graph visualization
- Metrics and flow visualizations when explicitly enabled
Transport support
Section titled “Transport support”Some capabilities depend on transport metadata support. For example, topology and message operations may vary between transports.
The following matrix reflects the current dashboard capability flags used by the MassTransit dashboard implementation.
| View | RabbitMQ | Azure SB | SQS/SNS | SQL |
|---|---|---|---|---|
| Dashboard | Yes | Yes | Yes | Yes |
| Health | Yes | Yes | Yes | Yes |
| Overview | Yes | Yes | Yes | Yes |
| Queues | Yes | Yes | Yes | Yes |
| Sources | Yes | Yes | Yes | Yes |
| Subscriptions | Yes | Yes | Yes | Yes |
| Topology graph | Yes | Yes | Yes | Yes |
| Messages | Yes | Yes | No | Yes |
| Fault inbox | Yes | Yes | No | Yes |
| Bulk fault requeue | Yes | Yes | No | Yes |
| Message archive | No | No | No | Yes |
Operator actions support
Section titled “Operator actions support”The page matrix above describes page visibility and major feature areas. The following matrix calls out the current operator actions exposed by the dashboard backend APIs.
| Action | RabbitMQ | Azure SB | SQS/SNS | SQL |
|---|---|---|---|---|
| Requeue fault group | Yes | Yes | No | Yes |
| Purge fault group | No | No | No | Yes |
| Requeue single message | Yes | Yes | No | Yes |
| Bulk requeue | Yes | Yes | No | Yes |
| Purge queue | Yes | No | Yes | Yes |
| Purge error queue | Yes | No | Yes | Yes |
| Purge dead-letter queue | Yes | No | Yes | Yes |
| Purge archive queue | No | No | No | Yes |
Configure the dashboard
Section titled “Configure the dashboard”To use the dashboard, add the MassTransit.AspNetCore package and configure it in your ASP.NET Core application.
using MassTransit;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMassTransit(x =>{ x.UsingRabbitMq((context, cfg) => { cfg.ConfigureEndpoints(context); });});
builder.Services.AddBusMetadataExplorer();
builder.Services.AddMassTransitDashboard(options =>{ options.Metrics.Enabled = true; options.Flow.Enabled = true;});
var app = builder.Build();
app.UseMassTransitDashboard();
app.Run();By default, the dashboard is available at /masstransit.
MassTransitDashboardOptions
Section titled “MassTransitDashboardOptions”| Property | Default | Description |
|---|---|---|
| BasePath | “masstransit” | URL base path used to host the dashboard UI and API |
| RequireAuthorization | false | Requires authenticated users for dashboard access |
| AuthorizationPolicy | null | Optional ASP.NET Core authorization policy for dashboard API routes |
| Telemetry.ChannelCapacity | 50000 | In-memory channel capacity for dashboard telemetry events (for metrics and flow) |
| Metrics.Enabled | false | Enables metrics collection and metrics streaming endpoints |
| Metrics.WindowSeconds | 300 | Sliding window length used for metrics snapshots |
| Metrics.BucketSeconds | 5 | Bucket size used to aggregate metrics data |
| Metrics.StreamIntervalSeconds | 5 | Server-sent event (SSE) publish interval for metrics streams |
| Metrics.InactiveEvictionSeconds | 900 | Idle eviction timeout for metrics state |
| Metrics.MaxEndpointsPerBus | 256 | Maximum endpoints tracked for metrics per bus |
| Metrics.MaxComponentsPerBus | 512 | Maximum components tracked for metrics per bus |
| Metrics.MaxComponentEndpoints | 16 | Maximum endpoints linked to a single component |
| Flow.Enabled | false | Enables conversation flow graph snapshots and streaming |
| Flow.InactiveEvictionSeconds | 900 | Idle eviction timeout for flow state |
| Flow.MaxNodesPerBus | 512 | Maximum flow graph nodes tracked per bus |
| Flow.MaxEdgesPerBus | 2048 | Maximum flow graph edges tracked per bus |
| Flow.MaxConversationLinksPerBus | 10000 | Maximum conversation links tracked per bus |
| Flow.MaxEdgeMessageTypes | 8 | Maximum message types tracked per flow edge |
Configure authorization
Section titled “Configure authorization”The dashboard must not be exposed on public or unauthenticated sites. Require authentication and enforce an authorization policy before enabling it anywhere outside local development.
builder.Services.AddAuthorization(options =>{ options.AddPolicy("DashboardOperators", policy => { policy.RequireAuthenticatedUser(); policy.RequireRole("Operations"); });});
builder.Services.AddBusMetadataExplorer();
builder.Services.AddMassTransitDashboard(options =>{ options.BasePath = "/ops/masstransit"; options.RequireAuthorization = true; options.AuthorizationPolicy = "DashboardOperators"; options.Metrics.Enabled = true; options.Flow.Enabled = true;});
var app = builder.Build();
app.UseAuthentication();app.UseAuthorization();app.UseMassTransitDashboard();When RequireAuthorization is enabled, unauthenticated requests to the dashboard base path return 401 Unauthorized.
If the host is reachable without authentication, do not enable the dashboard.
Configure from appsettings.json
Section titled “Configure from appsettings.json”Dashboard options can be bound using the ASP.NET Core options pattern.
{ "MassTransit": { "Dashboard": { "BasePath": "/masstransit", "RequireAuthorization": true, "AuthorizationPolicy": "DashboardOperators", "Metrics": { "Enabled": true, "WindowSeconds": 300 }, "Flow": { "Enabled": true } } }}builder.Services.AddOptions<MassTransitDashboardOptions>() .BindConfiguration("MassTransit:Dashboard");
builder.Services.AddBusMetadataExplorer();
builder.Services.AddMassTransitDashboard();