If you are working in middleware space, you must have come across the messaging solutions like Apache ActiveMQ, IBM MQ, etc. Most of these solutions are proprietary in nature and hard to interoperate. To resolve this situation, the Advanced Message Queuing Protocol (AMQP), which is an open standard application layer protocol for message-oriented middleware was developed. In this blog, we will center on the AMQP implementation by Apache Qpid and IBM MQ.
For years, the messaging method to application integration was available only from exclusive vendors. Each vendor had their own messaging API and protocol, and without going to trouble, they wouldn't interoperate. By instilling the Java Message Service API, things improved a bit.
AMQP is a binary, application layer protocol, intended to support a wide variety of messaging applications and communication patterns. It offers flow controlled, message-oriented communication with message-delivery guarantees at least once, and authentication and/or encryption based on SASL and/or TLS. It adopts an underlying reliable transport layer protocol such as Transmission Control Protocol.
The original goal of AMQP was to solve the problem of messaging interoperability in the financial industry between heterogeneous platforms and message brokers. AMQP set out to address the challenges of interoperability by creating a standard for how a message should be structured and transmitted between platforms. This standard binary wire-level protocol for messaging would, therefore, allow disparate heterogeneous systems between companies to effortlessly exchange messages between each other, irrespective of the message broker vendor and platform used by each company.
AMQP's features were specified by users drawing on their collective hundreds of years of experience solving real-world problems. The features shown below displays what AMQP can do, and the additional capabilities we intend to add in future, compatible, minor updates.
The Qpid project aims to outgrow the AMQP ecosystem. Qpid offers messaging APIs and message brokers for use in your application, and core libraries for making AMQP part of your own messaging product. Qpid provides the most thorough and well-matched implementation of AMQP.
Open source – Qpid is an open source, and you can gain from our contributions just as we can gain from yours.
Many languages, many platforms – Qpid supports a wide range of computing environments and programming languages.
Messaging infrastructure – You can deploy and design an AMQP network that integrates with Qpid services in your enterprise.
Application development – Messaging is vital to reliable distributed applications, and Qpid provides the tools you need to build one.
Your messaging product – There are several established messaging systems, and we want to make it easy for them to speak AMQP. Look into using Qpid Proton instead of developing your own protocol support.
Traditional messaging has engrossed on the back office, with just one logical broker at the center of things. The AMQP 1.0 standard makes messaging probable in a new dimension. The next sign of messaging will deliver a different network of messaging intermediaries. It will leverage any repetition in the network to route around disasters, and it will allow messaging applications to operate at an extraordinary scale.
IBM MQ is a secure messaging solution that rapidly transports message data between applications, systems, and services. It runs as software, on a high specification appliance, in multiple clouds, and on the mainframe. Connect IBM MQ is about connecting applications, services, and systems, whether on-premises, in clouds or both. IBM MQ enables you to connect applications written today with those written years ago. It can even facilitate sending file data as messages over the MQ network. Protect IBM MQ protects messages on the move with TLS. It also protects at rest but goes one step further than those who only protect the disk - which is still vulnerable to those with disk access - by encrypting the messages themselves. This helps you to safeguard your customers and, your business. Simplify IBM MQ provides a single messaging backbone that simplifies application development by removing the need for close coupling and building transnationality and certain security features.
The IBM MQ Light API is based on the OASIS Standard AMQP Version 1.0 wire protocol. AMQP specifies how messages are sent between senders and receivers. An application acts as a sender when the application sends a message to the message broker, such as IBM MQ. IBM MQ acts as a sender when it sends a message to an AMQP application.
IBM MQ now supports AMQP 1.0 clients (including the existing IBM MQ Light clients) via the introduction of the AMQP channel in MQ 184.108.40.206
The MQ Light messaging API is based on AMQP 1.0. The API provides most of the messaging capability needed for the majority of publish/subscribe and point-to-point messaging flows.
The MQ Light API has the following messaging features:
At-most-once message delivery
At-least-once message delivery
Topic string destination addressing
Message and destination durability
Client takeover for easy resolution of hung clients
Configurable read ahead of messages
Configurable acknowledgment of messages
Shared destinations to allow multiple subscribers to share the workload