EventHub Explorer
Developer messaging toolkit

Inspect, send and receive messages without the boilerplate.

EventHub Explorer is a lightweight web UI for Azure Event Hubs, Azure Storage Queues, Azure Service Bus and RabbitMQ. Use production services or work fully offline with local emulators.

.NET 10.0MIT licensedDocker: dvlaskin/eventhubexplorer

Supported services

Azure Event Hubs

Namespace or Event Hub connections, plus eventhubs-emulator.

Azure Storage

Queues for messaging and Blob Storage for checkpoints, with Azurite.

Azure Service Bus

Queues and topics with namespace access and a local emulator.

RabbitMQ

AMQP/AMQPS queues and exchanges, including the management image.

Service Real Azure / Broker Emulator / Local
Azure Event Hubs Namespace and Event Hub connection strings eventhubs-emulator
Azure Storage Queue *.queue.core.windows.net Azurite
Azure Blob Storage Event Hubs checkpoint storage Azurite (UseDevelopmentStorage=true)
Azure Service Bus Namespace-level Queue/Topic Service Bus emulator
RabbitMQ amqp:// / amqps:// rabbitmq:management

Screenshots

EventHub Explorer home page
Home
EventHub Explorer configuration page
Configuration
EventHub Explorer Event Hub page
Message Hub

Features

All four systems share payload transformation, compression and batch sending. Entity types and receiving modes are service-specific.

Common operations

Operation What it does
Override GUID / DateTime Replaces detected values with freshly generated ones before sending.
Compress & encode GZip + Base64 on send; automatic decode and decompression on receive.
Send messages Send one, a batch, or a delayed batch with a configurable interval.
Auto-format JSON Pretty-prints valid JSON payloads on receive.

Service-specific differences

Capability Event Hubs Storage Queues Service Bus RabbitMQ
Send to Event Hub (partitioned stream) Queue Queue or Topic Queue or Exchange (direct/fanout/topic)
Receive from Event Hub, with/without checkpoints Queue (polling) Queue or Topic Subscription Queue or Exchange-bound Queue
Checkpoint tracking Blob Storage
Event Hubs: $Default is used by default. Checkpoints require Blob Storage (Azurite locally or Azure Blob in production).

Requirements and installation

Docker is required for emulators or containerized runs. The .NET 10 SDK is required only for source builds. You need at least one service or broker to connect to.

Run locally from source

git clone https://github.com/dvlaskin/EventHubExplorer.git
cd EventHubExplorer
dotnet build
dotnet run --project src/WebUI/WebUI.csproj
# Open http://localhost:5235/

Run with Docker

docker pull dvlaskin/eventhubexplorer
docker run -d -p 5235:8080 --name eventhubexplorer dvlaskin/eventhubexplorer
# Open http://localhost:5235/

Docker Compose example

services:
  eventhubexplorer:
    image: dvlaskin/eventhubexplorer:latest
    container_name: eventhubexplorer
    ports:
      - "5235:8080"
    volumes:
      - data-volume:/app/Data
    networks:
      - docker-network
volumes:
  data-volume:
networks:
  docker-network:
    external: true

Connection strings

Replace placeholders like <NamespaceName>, <KeyName> and <AccountName> with your values.

Event Hubs emulator

# Same machine
Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
# LAN: replace host with emulator IPv4; Docker bridge alias: eventhubs-emulator
# Different Docker bridge network: host.docker.internal

Real Azure Event Hubs

# Namespace-level
Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>
# Event Hub-level
Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<EventHubName>

Azurite Blob Storage (checkpoint store)

# Local shortcut
UseDevelopmentStorage=true
# Docker bridge service endpoint
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite:10000/devstoreaccount1;

Azurite Storage Queue

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

Service Bus

# Emulator (same machine)
Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;
# Docker alias: servicebus-emulator; other network: host.docker.internal
# Administration Client: append :5300 to the host
# Azure namespace
Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>

RabbitMQ

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
# UI: http://localhost:15672 (guest / guest)
amqp://guest:guest@localhost:5672
amqp://guest:guest@localhost:5672/myvhost
amqps://user:pass@hostname:5671/vhost
RabbitMQ: Queues and exchanges are declared automatically as durable. For an Exchange, provide both Routing Key and the Queue Name used to bind a receiving queue.

Support the project

If EventHub Explorer is useful, consider giving it a ⭐ star on GitHub and Docker Hub .

License

MIT.