Skip to content

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

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

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

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.

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

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.

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();