One of the key patterns in building scalable applications is queues. Let’s say you have a Website or Web Service (in your Web Role) that responds quickly to a user request, but there’s another process that takes longer. It might be a long data base inquiry or video encoding or extensive calculation would be in a Worker Role. You may want to spin up more processors to work on those long term items too. The way the Web Role talks to your Worker Role is through queues.
You could choose Windows Azure Queues as a dedicated queue storage mechanism built on top of the Windows Azure storage services. You add an item on the queue, and the Worker Role checks the queue and performs the work.
Of you might choose to use a Service Bus Queue when you want to run process messages in a particular order (guaranteed first-in-first-out. Or maybe you need to hold the item in a queue and store it for a while. Or maybe you need automatic duplicate detection.
A new article on MSDN analyzes the differences and similarities between the two types of queues offered by Windows Azure today.
- Windows Azure Queues.
- Windows Azure Service Bus Queues.
The article helps you compare and contrast the respective technologies and be able to make a more informed decision about which solution best meets your needs.
While both queuing technologies exist concurrently, Windows Azure Queues were introduced first, as a dedicated queue storage mechanism built on top of the Windows Azure storage services. Service Bus Queues, introduced with the latest release of the Service Bus, are built on top of the broader “brokered messaging” infrastructure designed to integrate applications or application components that may span multiple communication protocols, data contracts, trust domains, and/or network environments.
The article describes scenarios and does a feature by feature comparison.
About Queuing in Windows Azure
Both Windows Azure Queues and Service Bus Queues are implementations of the message queuing service currently offered on Windows Azure. Each has a slightly different feature set, which means you can choose one or the other, or use both, depending on the needs of your particular solution or business/technical problem you are solving.
Windows Azure Queues, which are part of the Windows Azure storage infrastructure, feature a simple REST-based Get/Put/Peek interface, providing reliable, persistent messaging within and between services.
Service Bus Queues are part of a broader Windows Azure messaging infrastructure that supports queuing as well as publish/subscribe, Web service remoting, and integration patterns.
In the Article
Compares Windows Azure Queues and Service Bus Queues:
- Ordering guarantee
- Delivery guarantee
- Transaction support
- Receive behavior
- Receive mode
- Exclusive access mode
- Lease/Lock duration and granularity
- Batched send and receive
Service Bus Queues
- Building loosely-coupled apps with Windows Azure Service Bus Topics and Queues (video)
- An Introduction to Service Bus Queues
- Creating Applications that Use Service Bus Queues in Windows Azure Developer Guidance
- Creating Applications that Use Service Bus Topics and Subscriptions in Windows Azure Developer Guidance
Windows Azure Queues
Getting Started with Code
Bruce D. Kyle
ISV Architect Evangelist | Microsoft Corporation