Queue Storage is a service for storing large numbers of messages, for example from automated sensors, that can be accessed remotely via authenticated calls using HTTP or HTTPS. A single queue message can be up to 64 KB in size, and a queue can contain millions of messages, up to the total capacity limit of a storage account. Queue storage is often used to create a backlog of work to process asynchronously.
AzureQstor uses a combination of S3 and R6 classes. The queue endpoint is an S3 object for compatibility with AzureStor, while R6 classes are used to represent queues and messages.
library(AzureQstor) endp <- storage_endpoint("https://mystorage.queue.core.windows.net", key="access_key") # creating, retrieving and deleting queues create_storage_queue(endp, "myqueue") qu <- storage_queue(endp, "myqueue") qu2 <- create_storage_queue(endp, "myqueue2") delete_storage_queue(qu2)
The queue object exposes methods for getting (reading), peeking, deleting, updating, popping (reading and deleting) and putting (writing) messages:
qu$put_message("Hello queue") msg <- qu$get_message() msg$text ##  "Hello queue" # get several messages at once qu$get_messages(n=30)
The message object exposes methods for deleting and updating the message:
msg$update(visibility_timeout=30, text="Updated message") msg$delete()
You can also get and set metadata for a queue with the AzureStor
get_storage_metadata(qu) set_storage_metadata(qu, name1="value1", name2="value2")
It’s anticipated that AzureQstor will be submitted to CRAN before long. If you are a queue storage user, please install it and give it a try; any feedback or bug report is much appreciated. You can email me or open an issue on GitHub.