The following are example scripts to facilitate operations against the Azure Storage Queue Transport.
Requirements
These scripts require the Azure command line (Azure CLI) to be installed. For more information refer to the Azure CLI installation guide.
For the scripts to be run against the Azure Storage Queue transport, a valid connection string to the Azure Storage account must be present. For additional information, refer to the document on how to create a storage account
For easier access, the connection string can be stored as an environment variable.
#get the connection string,
$connectionString=az storage account show-connection-string -n $storageAccount -g $resourceGroup --query connectionString -o tsv
#set conn string as env variable
$env:AZURE_STORAGE_CONNECTION_STRING = $connectionString
Create Queues
Queue creation can be done for a specific endpoint or queues shared between multiple endpoints.
The Azure Storage Queues Transport will fail to start if a queue name is longer than 63 characters. Refer to the sanitization document for more details.
#check if queue exists
az storage queue exists -n "endpointname"
#create a queue
az storage queue create -n "endpointname"
#create a error queue
az storage queue create -n "error"
Delete Queues
az storage queue delete -n "endpointname"
Publish/Subscribe
Azure Storage Queue transport implements the publish/subscribe (pub/sub) pattern.
Create the subscription routing table
In a pub/sub pattern, the transport creates a dedicated subscription routing table shared by all endpoints, which holds subscription information for each event type.
az storage table create -n "subscriptions"
Create a subscription
When the subscriber endpoint subscribes to an event, an entity is created in the subscription routing table. When the publisher endpoint publishes an event, the subscription routing table is queried to find all of the subscribing endpoints.
az storage entity insert --entity PartitionKey=MyEvent.Full.Type.Name RowKey=SubscriberEndpointName Address=subscriber Endpoint=SubscriberEndpointName Topic=MyEvent.Full.Type.Name --if-exists fail --table-name subscriptions
Unsubscribe
To unsubscribe, delete the entity from the subscriptions table
az storage entity delete --partition-key MyEvent.Full.Type.Name --row-key Subscriber --table-name subscriptions --if-match *
Delayed delivery
When delayed delivery is enabled at an endpoint, the transport creates a storage table to store the delayed messages.
By default, the storage table name is constructed using a naming scheme that starts with the word delays followed by SHA-1 hash of the endpoint's name.
az storage table create -n "delays11f9578d05e6f7bb58a3cdd00107e9f4e3882671"
To ensure a single copy of delayed messages is dispatched by any endpoint instance, a blob container is used for leasing access to the delayed messages table.
Similar to the storage table, the blob container names are also constructed using a naming scheme that starts with the word delays followed by SHA-1 hash of the endpoint's name.
az storage container create -n "delays11f9578d05e6f7bb58a3cdd00107e9f4e3882671" --public-access off
Delayed messages storage table and container names can be overridden with a custom name. For more information see Azure Storage Queues Delayed Delivery