In Microsoft Azure, we have two implementations of Queues, Windows Azure Queues and Service Bus Queues. Both the Queues are the internally implemented using Message Queuing service offered on Windows Azure.
We should prefer Windows Azure Queues for the following scenarios:-
- When the application needs to store over 5 GB worth of messages in a Queue and the life time of messages are shorter than 7 days
- When server-side log is required for all transactions executed against Queues
- When the application requires flexible leasing to process messages
We should prefer Azure Service Bus Queues for the following scenario :-
- When the application requires full integration with .NET WCF
- When message batches need to be published and consumed
- When the message size handled by the application is between 64 KB and 256 KB
- When the application requires “At most once” guaranteed delivery without the need to build additional infrastructure components
- When the application requires First-In-First-Out (FIFO) delivery
- When the Queue Size does not exceed 5 GB
- When role-based access to Queue is required
- When the application requires Automatic Duplicate detection
- When the application Requires Atomicity and Transactional behavior when sending or receiving multiple messages from Queue
- When the message retrieval does not require polling
- When the Time-to-Live (TTL) characteristics of application-specific workload can exceed 7 day window
More detailed guidance, soft limits, Thresholds is given in http://msdn.microsoft.com/en-us/library/hh767287.aspx