Understanding the Differences Between AMQP with Qpid & IBM MQ

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.

Problem with Existing Messaging Solutions

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.

What is AMQP?

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.

Goal of AMQP

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 Features

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.

UBIQUITY:
  • Open Internet Protocol standard supporting Clear and unambiguous core functionality for business message routing and delivery within the Internet infrastructure.
  • Low barrier (opportunity cost) to understand, implement, and use.
SAFETY:
  • Infrastructure for a trusted and secure global transaction network.
  • Containing business messages that are tamper-proof
  • Supporting message durability independent of receivers being connected
  • Message delivery is resilient to a technical failure
FIDELITY:
  • Well-stated message queuing and delivery semantics
  • Well-stated message ordering semantics describing what a sender can expect a receiver to observe and a queue manager to observe.
  • Well-stated reliable failure semantics to manage all exceptions.
UNITY:
  • Any AMQP client can initiate communication with any AMQP broker over TCP/IP.
  • It offers the core set of messaging patterns through a single manageable protocol.
  • Supports Peer-to-Peer messaging across any network.
Interoperability:
  • Multiple stable and interoperating broker implementations, each with a completely independent provenance including design, architecture, code, ownership (minimum 2, desirable 3).
  • Each broker implementation is conformant with the specification, for all mandatory message exchange and queuing functionality, including fidelity semantics.
  • Implementations are independently testable and verifiable by any member of the public free of charge.

Apache Qpid

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.

The Future of Messaging Is Larger

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

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.

IBM MQ with AMQP

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 8.0.0.4

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

Conclusion

Many business applications depend heavily on those idioms. AMQP brings them together in one solution. AMQP solutions may also be effectively deployed to high-performance clustering and grid computing problems, however the primary goal of AMQP is to enable the communications necessary for business processes. The AMQP implementation has also been bridged to several legacy proprietary middleware products to ensure a smooth transition. For more information, you can email us at info@royalcyber.com or visit www.royalcyber.com.

1 Comment

  1. kavyagologica says:

    Great read! Thank you for such useful insights.

Leave a Reply