Queue Storage

Azure Queue Storage emulation over the native REST (XML) protocol. Compatible with the azqueue SDK and the az storage queue / az storage message CLI commands.

Endpoint

URLhttp://127.0.0.1:10001/devstoreaccount1
ProtocolHTTP / REST (XML)
PersistedYes โ€” state lives under /data

Configuration

FlagEnvironment variableDefault
-queue-addrLOCALAZ_QUEUE_ADDR:10001
-dataLOCALAZ_DATA_DIR/data

Supported operations

OperationREST surface
List QueuesGET /{account}?comp=list
Create / Delete QueuePUT / DELETE /{account}/{queue}
Get / Set Queue MetadataGET / PUT /{account}/{queue}?comp=metadata
Put MessagePOST /{account}/{queue}/messages
Get / Peek MessagesGET /{account}/{queue}/messages[?peekonly=true]
Update MessagePUT /{account}/{queue}/messages/{messageid}
Delete MessageDELETE /{account}/{queue}/messages/{messageid}
Clear MessagesDELETE /{account}/{queue}/messages

Supported semantics: queue metadata and the approximate message count, dequeue visibility timeouts and pop receipts, message TTL (including the infinite -1 TTL with eviction on access), and dequeue counts.

Not yet implemented: SAS, and Shared Key signature verification.

Example: Go SDK

connStr := os.Getenv("AZURE_STORAGE_CONNECTION_STRING")
client, _ := azqueue.NewServiceClientFromConnectionString(connStr, nil)
queue := client.NewQueueClient("work-items")

ctx := context.Background()
queue.Create(ctx, nil)
queue.EnqueueMessage(ctx, "hello", nil)

resp, _ := queue.DequeueMessage(ctx, nil)
msg := resp.Messages[0]
queue.DeleteMessage(ctx, *msg.MessageID, *msg.PopReceipt, nil)

Example: Azure CLI

# Export AZURE_STORAGE_CONNECTION_STRING first โ€” see the Get Started guide.

az storage queue create --name work-items
az storage message put --queue-name work-items --content "hello"
az storage message get --queue-name work-items
az storage message peek --queue-name work-items