Posted in:

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:

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.

Want to learn more about the Azure CLI? Be sure to check out my Pluralsight course Azure CLI: Getting Started.


Comment by James McDonald

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