Implementing a backoff when polling a queue
When using a Windows Azure Queue Service queue to drive processing, the simplest technique is for a consumer to poll the queue and initiate processing when it retrieves a message. This works well when the queue contains messages. However, when the queue is empty for an extended period, it can lead to unnecessary storage operations.
The Queue service has a scalability target of 500 messages per second corresponding to 1.8 million messages per hour. At the standard billing rate for storage operations ($0.01/10 K operations), this amounts to $1.80 per hour, which is an order of magnitude more expensive than the cost of a compute hour. Consequently, when the queue is empty, it may be worth implementing a backoff strategy to throttle the polling of the queue.
The basic idea is that once a consumer finds the queue to be empty, it should introduce a wait interval between successive polls of the queue. This reduces the polling frequency. If the queue remains...