Messaging has become pretty fundamental with the wider adoption of Microservices and other cloud design pattern. There are many ways to transmit a message. Many messaging systems today, like Azure Service Bus, use a protocol called AMQP, or the Advanced Message Queuing Protocol. While AMQP is used behind the scene in messaging systems, let’s explore a little bit of what it is.
Advanced Message Queuing Protocol (AMQP) is an open standard protocol used to pass messages between applications within or even across organizations. Standardizing messaging to a common protocol allows for any software system implementing the protocol to communicate with any other system using the same protocol. As an open standard, AMQP v1.0 is an international standard that is ISO and IEC approved as ISO/IEC 19464:2014.
For more information about the open standard, please visit: http://www.amqp.org
Here’s a short 3 minute video that explains what AMQP v1.0 is:
There are many reasons to develop an open standard. One of these reasons is easily implied by the term “open standard.” With AMQP being an open standard messaging protocol it’s much easier for completely different software systems to communicate without requiring a lot of extra overhead; such as custom integration code between any 2 systems, or even whole applications whose sole role is to facilitate those communications.
1 messaging protocol to rule them all
In addition to being a common messaging protocol between systems, AMQP is designed with a few key features in mind:
These key features of AMQP provide a few benefits to business who utilize this protocol with their systems. Some of these benefits include:
- Lower development costs when integrating software systems due to increased interoperability
- Higher message transport security without relying on the developers to “get it right.”
- Lower chance of vendor lock-in
- Broader availability of tools and libraries that support the messaging protocol
A single common messaging protocol allows for greater system integration across development platforms and frameworks. Here’s a list of some libraries for different programming languages that support the AMQP protocol:
- C# – AMQP .NET Lite
- Java – Apache Qpid Java Message Service client, and IIT Software SwiftMQ Java client
- Python – Apache Qpid Proton-Python
- PHP – Apache Qpid Proton-PHP
- C – Apache Qpid Proton-C
In addition to the libraries listed above, a quick online search yields many open source projects in various programming languages and platforms that are built to communicate using AMQP.
Azure Service Bus Supports AMQP
The AMQP v1.0 protocol is supported by Microsoft Azure Service Bus messaging. This allows for Azure Service Bus Queues and publish/subscribe (via Service Bus Topics and Subscriptions) brokered messaging to communicate effectively with a wide range of different platforms using a standard, binary protocol.
Any platform, language or library that implements support for AMQP can easily integrate with Azure Service Bus messaging (Queues and Topics/Subscriptions). While most of the Azure documentation is geared towards giving examples in .NET and C#, communicating with Azure Service Bus is fully supported from any other language or platform.
More information about Azure Service Bus and AMQP can be found in the Azure documentation article “AMQP 1.0 support in Service Bus“.