Queue Studio for Azure Service Bus
Service Bus in the editor: cloud namespaces and the local emulator in one tree, peek of a whole queue without locks, search in bodies and properties, and a whole dead-letter queue moved back in one operation. Works with Azure Service Bus and the Service Bus emulator.

Free
- Connections: a connection string (kept in VS Code's secret storage), a fully qualified namespace with Microsoft Entra ID (default Azure credential or Azure CLI), or the local emulator.
- Tree: queues with active, scheduled and dead-letter counts, topics with their scheduled count, subscriptions with active and dead-letter counts; every queue and subscription has its dead-letter queue.
- Peek: walks a whole queue, subscription or dead-letter queue by sequence number, in pages, up to a limit you set. Nothing is locked, so delivery counts and consumers are not affected. Session-enabled entities are read one session at a time, which locks that session while it loads. The table shows sequence number, message id, enqueue time, delivery count, subject, content type, size, session, state and application properties; the detail shows the body (JSON formatted and coloured) and every property.
- Send: body, content type, subject, message and correlation id, application properties, session id, time to live and scheduled enqueue time. Resend fills the form from a selected message.
- Entities: create and delete queues, topics and subscriptions; edit max delivery count, lock duration, time to live, dead-lettering on expiration and forwarding of queues and subscriptions, and the default time to live of topics.

Pro
A 14-day trial of everything starts with the first run. After it, Pro needs a license key.
- Search: searches the peeked messages by substring or regular expression, with or without match case, in bodies, application properties (
name=value) or both.
- Move a whole dead-letter queue: moves it back to its queue, or to its topic for a subscription, or to any queue or topic. Each batch is sent first and removed from the dead-letter queue only after the send succeeded, so a failed send leaves the messages where they were; if removing a sent message fails, it is reported and may then be in both places. Progress is shown and the move can be cancelled.
- Move or delete selected messages: to reach them, messages are received from the start with a lock and the others are released; on a main queue each released message counts one more delivery, and the confirmation says so. A selected scheduled message of a queue is scheduled on the target for the same time and then cancelled when moved, and cancelled when deleted.
- Purge: purges a queue, a subscription, a dead-letter queue or one session. Scheduled and deferred messages stay.
- Export: exports selected or shown messages to JSON or NDJSON, and sends messages from such a file.


Getting started
- Open Queue Studio: Service Bus in the activity bar and press +.
- Choose how to connect:
- Connection string: a namespace-level one from Shared access policies. Entity-level strings with
EntityPath cannot list the namespace.
- Microsoft Entra ID:
contoso.servicebus.windows.net and a credential. Reading needs Azure Service Bus Data
Receiver, sending Data Sender, entity management Data Owner.
- Local emulator: host, AMQP port (5672) and management port (5300) of the emulator container.
- The connection is tried before it is saved. Click a queue, subscription or dead-letter queue to peek it.
Session-enabled queues and subscriptions are peeked one session at a time (Peek Session…). Accepting a session
locks it, so its consumer waits until the peek is done. Their dead-letter queues need no session.
Local emulator
Found while testing against the mcr.microsoft.com/azure-messaging/servicebus-emulator image of September 2026:
- The management API is plain HTTP on port 5300; the JavaScript administration client only speaks HTTPS, so Queue
Studio switches the scheme for emulator connections.
- Queue descriptions carry no count details and subscription counts are always zero. For the emulator, counts come
from a peek walk; the active count of a session-enabled queue or subscription is shown as
?.
- Updating an entity succeeds, but its answer cannot be parsed by the SDK; Queue Studio reads the settings back and
reports any value that did not take effect.
- A plain receiver on a session-enabled entity peeks nothing instead of failing, which is why Queue Studio asks for
a session.
- Limits of the emulator itself: one namespace, 50 entities, 256 KB messages, time to live of at most one hour,
no Entra ID, nothing persists across a container restart.
Settings
| Setting |
Default |
|
queueStudioServiceBus.peek.limit |
1000 |
Messages one peek walk reads at most |
queueStudioServiceBus.peek.pageSize |
100 |
Messages per peek request |
queueStudioServiceBus.operations.batchSize |
50 |
Messages a move, delete or purge takes at a time |
Pricing, license, privacy, support
Pro costs $4 a month or $40 a year for individuals, and $8 a month or $80 a year per person for organizations, see
pricing. License keys are sold through Polar as
merchant of record, which handles payments, taxes, invoices and refunds, under the
terms of sale and the
refund policy.
Proprietary, under the
end user license agreement.
No telemetry. Besides your namespaces and Microsoft Entra ID, the extension talks only to Polar, to check a license key: it sends the key and a machine id.
See the privacy policy. Questions and bugs:
support. The full
user guide covers every feature.
Microsoft, Azure and Azure Service Bus are trademarks of the Microsoft group of companies. Queue Studio is an independent product and is not affiliated with or endorsed by Microsoft.
| |