Identifying and handling poison messages
The standard way to use a Windows Azure Queue Service queue is to retrieve a message, do some processing based on the message, and then delete the message from the queue. A problem arises if the content of the message causes an error during processing that prevents the consumer from deleting the message from the queue. When the message once again becomes visible on the queue, another consumer will retrieve it, and the failure process begins again. Such a message is referred to as a poison message because it poisons the queue and prevents messages in it from being processed. When there is only a single consumer, a poison message can completely block processing of the queue.
A poison message has to be identified, removed from the queue, and logged for subsequent investigation. A convenient way to log the poison message is to insert it in a poison message queue where it is not processed in a way that causes problems. When a consumer requests a message...