Advanced Service Bus with AMQP

This post was written by my team member Clemens Vasters.


The Advanced Message Queueing Protocol 1.0 is a standardized framing and transfer protocol for asynchronously, securely, and reliably transferring messages between two parties. AMQP 1.0 is the result of broad industry collaboration that brought together middleware vendors with many messaging middleware users. The technical standardization forum for the AMQP protocol and extension specifications is OASIS, and it has achieved formal approval as an international standard as ISO/IEC 19494.

The general availability of the AMQP 1.0 protocol implementation on Microsoft Azure Service Bus was announced in May 2013, with a compatible implementation being available on the on-premises variant Service Bus for Windows Server 1.1. At the end of 2014. we announced the general availability of Azure Event Hubs, whose primary protocol is AMQP 1.0, and in 2015 we put Azure IoT Hub into production that also uses AMQP 1.0 as its most universal flagship protocol.

Since Service Bus shipped its AMQP 1.0 support, we've made many improvements on our implementation of AMQP, fixing specification compliance issues, improving performance, and adding support for Web Sockets and support for claims-based authorization based on extension specifications that are in standardization progress at OASIS. We have collaborated with and contributed to the Apache Qpid Proton AMQP project for both C and Java. And we have created a super-compact, native-code AMQP stack called uAMQP available as open source for embedded devices.

Today, we are announcing our biggest AMQP 1.0 protocol update for the core cloud broker platform Service Bus since we shipped the initial protocol support, and at the same time we're releasing fresh and comprehensive documentation for how we use AMQP 1.0 with Service Bus – and we're explaining the protocol itself along the way so that you don't have to chew through the committee specification.

The documented protocol additions bring the AMQP 1.0 implementation of Service Bus nearly up to complete parity with the proprietary SBMP protocol that has so far existed in parallel. The new capabilities available on top of AMQP 1.0 include lock renewal, browsing/peek, message scheduling and cancellation, session lock renewal, session state management, session enumeration, subscription rule management, and handling of deferred messages. Support for the Service Bus transaction capabilities will follow later this year.

The protocol documentation also explains in detail all Service Bus specific message properties, and the claims-based authorization interaction.

The design goal for all these extended AMQP 1.0 features is that they ought not require any changes to existing AMQP 1.0 protocol stacks. You can use all of these advanced features with the C and Java versions of Apache Qpid Proton including the various language bindings, with AMQP.NET Lite, with uAMQP, and with the nodeAMQP stacks.

The wire level documentation, which is the deliverable we are shipping today, can be found here .