Managing Storage Queues with the Azure CLI
In this post I’ll continue my series on the Azure CLI with a look at how you can manage storage queues and messages. Previous posts in the series are here:
- Manage Blob Storage with the Azure CLI
- Create and Configure a VM with the Azure CLI
- Automate away your Azure Portal usage with the Azure CLI
- Using Queries with the Azure CLI
- Introducing the Azure CLI
I’m going to assume that we’ve already created a storage account and put the connection string into an environment variable called AZURE_STORAGE_CONNECTION_STRING
to save us passing the --connection-string
argument to each command. Read my previous post for more details on how to do this.
Creating Queues
To check if a queue exists:
$queueName = "myqueue"
az storage queue exists -n $queueName
And to actually create it (safe to call if the queue already exists):
az storage queue create -n $queueName
Posting Messages to a Queue
Now normally you wouldn’t be actually posting messages to queues from the CLI, but it might be useful for testing purposes or to trigger some kind of maintenance task. Here’s how you can post a message to a queue:
az storage message put --content "Hello from CLI" -q $queueName
You can also supply a time to live duration with the --time-to-live
argument which should be specified in seconds.
Retrieving Messages from a Queue
Receiving messages from the queue is a two-step process. First you use az storage message get
to mark a message on the queue as being locked for a set period of time (the “visibility timeout”). You then process the message and call az storage message delete
to delete the message from the queue. If you need more time, you can use az storage message update
to increase the visibility timeout for your message. If you fail to call either delete
or update
before the visibility timeout expires, your message becomes visible again for someone else to receive.
Here’s how we can get a message from the queue with a two minute visibility timeout:
az storage message get -q $queueName --visibility-timeout 120
The output from the get
command includes the id and **pop receipt **of the message. These are important as they need to be used in the call to delete (or update). Here’s how we can delete the message for a specific message:
az storage message delete --id "2a1d4311-c952-4199-94ac-801930da31c7" \
--pop-receipt "AgAAAAMAAAAAAAAAuSuJ51RD0wE=" -q $queueName
Again, it’s unlikely you’d often need to write code to read messages from queues from the command line, but it might be useful for diagnostic purposes if you wanted to write a script to resubmit certain messages from a poison message queue for example.
Learning More
As usual the best place to learn more is the official docs – in particular the az storage queue and az storage message groups of commands.
Comments
Thanks for this post... Azure such a big group of products. Helpful that someone has done what I was trying to Google (read a storage queue with az-cli)
James McDonald