Microsoft Azure offers a very powerful and cheap queueing system, based on Azure Storage. The node module azure-queue-client is a powerful component for node developers in order to interact with the Azure queues easily.
The updated version of the azure-queue-client now supports delayed jobs. This makes it possible to easily delay a running job in the queue worker for a specific time, .e.g. 5 minutes, 1 hour or any other time less than 7 days in the future.
// config with your settings var qName = '<<YOURQUEUENAME>>'; var qStorageAccount = '<<YOURACCOUNTNAME>>'; var qStorageSecret = '<<YOURACCOUNTSECRET>>'; var qPolling = 2;// load the module var azureQueueClient = new require('../lib/azure-queue-client.js');// create the listener var queueListener = new azureQueueClient.AzureQueueListener();// establish a message handler queueListener.onMessage(function(message) {// just logging console.log('Message received: ' + JSON.stringify(message)); console.log('Message Date: ' + new Date());// generate the delay policy var exponentialRetryPolicy = new azureQueueClient.AzureQueueDelayedJobPolicies.ExponentialDelayPolicy(1, 5);// delay the job console.log("Job was delayed " + exponentialRetryPolicy.count(message) + " times"); console.log("Delaying the job by " + exponentialRetryPolicy.nextTimeout(message) + " seconds"); return queueListener.delay(message, exponentialRetryPolicy); });// start the listening queueListener.listen(qName, qStorageAccount, qStorageSecret, qPolling, null);
As the code sample shows, the module relies on the concept of delay policies. Implementing custom policies is allowed and supported. Built-in policies are the exponential delay policy and the static delay policy.
The module is actively used and maintained in the azure costs service, so it can be used in production. If you would like to contribute or get more detailed information, please visit the github project page.