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
Limited support for certain transports:
- Message inspection and requeue operations
- Job status and recurring job information
Some capabilities depend on transport metadata support. For example, topology and message operations may vary between transports.
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.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”If the dashboard should not be public, require authentication and optionally apply a policy.
builder.Services.AddAuthorization(options =>{ options.AddPolicy("DashboardOperators", policy => { policy.RequireAuthenticatedUser(); policy.RequireRole("Operations"); });});
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.
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.AddMassTransitDashboard();