ServiceBusViewer
Service Bus Viewer is a web application for viewing and interacting with Azure Service Bus queues and topics.
Install / Use
/learn @VeselovAndrey/ServiceBusViewerREADME
Service Bus Viewer
IMPORTANT NOTE: This project was initially designed as a temporary solution (based on AI-generated code) to view messages in the Azure Service Bus Emulator.
Service Bus Viewer is a web application for viewing and interacting with Azure Service Bus queues and topics.
The main goal of this application is to support local development and testing using a Service Bus Emulator.
For more information on running and configuring the Azure Service Bus Emulator, see:
Features
- Connect to any Service Bus instance using a connection string.
- Browse all queues and topics in a namespace using a root connection string.
- Peek and receive messages from queues or topics.
- View message details and properties.
- Send messages to queues or topics.
Running the Service Bus Viewer
Running from GitHub Container Registry
You can use the container image from the GitHub Container Registry to run the Service Bus Viewer with Docker:
docker run --name ServiceBusViewer -p 5000:8080 -d ghcr.io/veselovandrey/servicebusviewer:latest
Or with Podman:
podman run --name ServiceBusViewer -p 5000:8080 -d ghcr.io/veselovandrey/servicebusviewer:latest
Build the container image using Docker / Podman
Use the provided Dockerfile to build the Service Bus Viewer image. Run the build command from the solution directory (where the solution file is located):
With Docker:
docker build -f ServiceBusViewer/Dockerfile -t servicebusviewer .
Or with Podman:
podman build -f ServiceBusViewer/Dockerfile -t servicebusviewer .
You can provide the Service Bus connection string via:
- CONNECTION_STRING: Connects to a specific queue or topic. You must specify the entity name in the UI.
- ROOT_CONNECTION_STRING: Connects with namespace-level permissions, allowing you to browse and select from all available queues and topics. When provided, the entity list is automatically populated, and you can switch between entities without reconnecting.
Example:
Docker:
docker run --name ServiceBusViewer -p 5000:8080 \
-e CONNECTION_STRING="Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;" \
-e ROOT_CONNECTION_STRING="Endpoint=sb://host.docker.internal:5300;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;" \
-d servicebusviewer
Podman:
podman run --name ServiceBusViewer -p 5000:8080 \
-e CONNECTION_STRING="Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;" \
-e ROOT_CONNECTION_STRING="Endpoint=sb://host.docker.internal:5300;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;" \
-d servicebusviewer
If CONNECTION_STRING is not set, the app falls back to its built-in development emulator connection string.
Running from source
To run the Service Bus Viewer from source, you need to have the following prerequisites installed:
- .NET SDK 10.0 or later
Navigate to the project directory and use
dotnet run
to restore dependencies and start the application.
Accessing the Service Bus Emulator
- Use the
localhostaddress when running the emulator on the same host as the viewer.
Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
- Use
host.docker.internalto connect from a container to a Service Bus emulator running on the host machine.
Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
- Use the host machine's network address when connecting from a container to a Service Bus emulator running on the host.
- Use the service name defined in your
docker-compose.yamlwhen both the emulator and Service Bus Viewer are running in containers on the same network. - Use the connection string from the Azure Portal for cloud Azure Service Bus instances (but it is recommended to use Service Bus Explorer or the Azure Portal built-in tool to work with cloud resources).
Hint: add port to the connection string if needed, e.g. if you are running multiple Service Bus emulators on the same host, use
Endpoint=sb://localhost:[PORT];SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
Endpoint=sb://host.docker.internal:[PORT];SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
Version history
-
0.10.0 (2025-02-15): Added/fixed:
- client-side JSON formatting and toggle for message body;
- display of subscription filters;
- bugfix: unable to send messages to topics;
- miscellaneous bugfixes.
-
0.9.0 (2025-02-10): Added support for:
- session-enabled message receive with Session ID input;
- sending messages with properties (MessageId, SessionId, CorrelationId, ScheduledEnqueueTime, TimeToLive);
- application property type;
- entity list caching.
-
0.8.0 (2026-02-05): Added queue/topic/subscription properties view.
-
0.7.0 (2026-02-01): Implemented client-side message expansion/collapse for better UX (and eliminated duplicate requests to Service Bus). Minor UI changes.
-
0.6.0 (2026-01-31): Added entity selection feature with visual icons for queues, topics, and subscriptions.
-
0.5.2 (2026-01-24): Took connection string from an environment variable.
-
0.5.1 (2026-01-22): Updated to .NET 10.
-
0.5.0 (2025-05-26): Initial version of ServiceBusViewer.
