AMQP 1.0 support in the Windows Azure Service Bus
New AMQP 1.0 support in the Service Bus allows you to build cross-platform, hybrid applications using an open standard protocol. Applications can be constructed using components built using different languages and frameworks and running on different operating systems. All these components can connect to the Service Bus and seamlessly exchange structured business messages efficiently and at full-fidelity.
Introduction: What is AMQP 1.0 and why is it important?
Traditionally, message-oriented middleware products have used proprietary protocols for communication between client applications and brokers. This means that once you’ve selected a particular vendor’s messaging broker, you need to use that vendor’s libraries to connect your client applications to it. This results in a degree of lock-in to that vendor, since porting an application to a different product requires re-coding all the connected applications.
Furthermore, connecting messaging brokers from different vendors is tricky and typically requires application-level bridging to move messages from one system to another, and to translate between their proprietary message formats. This is a surprisingly common requirement; for example, when providing a new unified interface to older disparate systems, or integrating IT systems following a merger.
Finally, the software industry is a fast-moving business; new programming languages and application frameworks are invented at a sometimes bewildering pace. Similarly, the requirements of IT systems evolve over time and developers want to take advantage of the latest languages and frameworks. But what if your selected messaging vendor isn’t supporting these platforms? Since the protocols are proprietary, it’s not possible for others to provide libraries for these new platforms. Therefore, you’re restricted to building gateways, bridges and other inelegant approaches.
The development of AMQP (Advanced Message Queuing Protocol) 1.0 was motivated by these issues. It originated at JP Morgan Chase, who, like most financial services firms, are heavy users of message-oriented middleware. The goal was simple, to create an open-standard messaging protocol that makes it possible to build message-based applications using components built using different languages, frameworks, and operating systems, all using best-of-breed components from a range of suppliers.
AMQP 1.0 technical features
AMQP 1.0 is an efficient, reliable, wire-level messaging protocol that you can use to build robust, cross-platform, messaging applications. The protocol has a simple goal: to define the mechanics of the secure, reliable, and efficient transfer of messages between two parties. The messages themselves are encoded using a portable data representation that enables heterogeneous senders and receivers to exchange structured business messages at full-fidelity. Here is a summary of the most important features:
- Efficient: AMQP 1.0 is a connection-oriented protocol that uses a binary encoding for the protocol instructions and the business messages transferred over it. It incorporates sophisticated flow-control schemes to maximize the utilization of the network and the connected components. That said, the protocol was designed to strike a balance between efficiency, flexibility and interoperability.
- Reliable: The AMQP 1.0 protocol allows messages to be exchanged with a range of reliability guarantees, from fire-and-forget to reliable, exactly-once acknowledged delivery.
- Flexible: AMQP 1.0 is a flexible protocol that can be used to support different topologies. The same protocol can be used for client-to-client, client-to-broker, and broker-to-broker communications.
- Broker-model independent: The AMQP 1.0 specification does not make any requirements on the messaging model used by a broker. This means that it’s possible to easily add AMQP 1.0 support to existing messaging brokers.
AMQP 1.0 is a Standard (with a capital ‘S’)
AMQP 1.0 has been in development since 2008 by a core group of 20+ companies, both technology suppliers and end-user firms. During that time, user firms have contributed their real-world business requirements and the technology vendors have evolved the protocol to meet those requirements. Throughout the process, vendors have participated in connect-a-thon workshops where they’ve collaborated to validate interoperability between their implementations.
In October 2011, the development work was transitioned to a technical committee within the Organization for the Advancement of Structured Information Standards (OASIS) and the OASIS AMQP 1.0 Standard was released in October 2012. The following firms participated in the technical committee during the development of the standard:
- Technology vendors: Axway Software, Huawei Technologies, IIT Software, INETCO Systems, Kaazing, Microsoft, Mitre Corporation, Primeton Technologies, Progress Software, Red Hat, SITA, Software AG, Solace Systems, VMware, WSO2, Zenika.
- User firms: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.
Some of the commonly cited benefits of open standards include:
- Less chance of vendor lock-in
- Broad availability of libraries and tooling
- Protection against obsolescence
- Availability of knowledgeable staff
- Lower and manageable risk
AMQP 1.0 and Service Bus
AMQP 1.0 support was added to the Windows Azure Service Bus as a preview feature in October 2012. It is expected to transition to General Availability (GA) in the first half of 2013.
The addition of AMQP 1.0 means that it’s now possible to leverage the queuing and publish/subscribe brokered messaging features of the Service Bus from a range of platforms using an efficient binary protocol. Furthermore, you can build applications comprised of components built using a mix of languages, frameworks and operating systems.
The diagram below illustrates an example deployment in which Java clients running on Linux, written using the standard Java Message Service (JMS) API, and .NET clients running on Windows, exchange messages via the Windows Azure Service Bus using AMQP 1.0.
Figure 1: Example deployment scenario showing cross-platform messaging using Service Bus and AMQP 1.0
At this time the following client libraries are known to work with the Service Bus:
|Java ||Apache Qpid Java Message Service (JMS) client |
IIT Software SwiftMQ Java client
|C ||Apache Qpid Proton-C |
|PHP ||Apache Qpid Proton-PHP |
|Python ||Apache Qpid Proton-Python |
Figure 2: Table of AMQP 1.0 client libraries
The Developer Guide accompanying the preview release provides information about how to obtain and use these libraries with the Service Bus. See the References section below for further information.
- AMQP 1.0 is an open, reliable messaging protocol that can be used to build cross-platform, hybrid applications. AMQP 1.0 is an OASIS standard.
- Service Bus support for AMQP 1.0 is available now as a preview feature with general availability expected during the first half of 2013. Pricing is the same as for the existing protocols.