Couldn’t not find any documentation on MSDN regarding this.
Note: we are processing message from a windows service.
What is the maximum no of times a azure storage queue message can be dequeued ?
There is no limit on the number of times a message can be dequeued from Azure Storage Queue.
Is our assumption correct that messages are moved to the poison queue only when an exception happens and it’s not based on the dequeue count ?
No. The message will continue to remain in the queue until you decide to move that message to some other queue (that you designate as poison queue) or delete that message.
If you're looking for this kind of functionality, I would suggest looking into Azure Service Bus. It has the notion of max delivery count
which is the number of times a message can be dequeued and deadletter subqueue
where a message can moved to if the dequeue count of the message exceeds the max delivery count.