Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

What Is The Advanced Message Queuing Protocol (AMQP)?

DZone's Guide to

What Is The Advanced Message Queuing Protocol (AMQP)?

What is AMQP? Here we'll explain the basics behind the advanced message queuing protocol and how it's designed to deal with low-latency data exchange in environments where connectivity, bandwidth, and network availability is in question.

· Integration Zone ·
Free Resource

Ready for feedback: How would you use Capital One’s Virtual Card Numbers API?

We are continuing our basic exploration of some of the real-time protocols that are driving the world these days. We published a story about Kafka the other day, helping shine a light on what the Apache project brings to the table. Today we wanted to highlight another real-time messaging protocol in use across large organizations called the advanced message queuing protocol, widely called AMQP. Ok, so what is AMQP? According to their website it is:

The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. It connects systems, feeds business processes with the information they need and reliably transmits onward the instructions that achieve their goals.

AMQP is seen as having some capabilities that overlap with Kafka, but have other more unique characteristics that allow it to stand out, focusing on:

- Organizations - applications in different organizations
- Technologies - applications on different platforms
- Time - systems don't need to be available simultaneously
- Space - reliably operate at a distance, or over poor networks

So why would companies, organizations, institutions, and government agencies want to be putting AMQP to work for them? It brings the following features to the table, helping organizations:

- Realize the savings commoditization brings; remove vendor lock-in
- Connect applications on different platforms; choose the right platform for the job
- Connect to business partners using a full-featured open standard; remove technical barriers to trade
- Position for innovations built upon the foundation of AMQP

AMQP was designed with security, reliability, interoperability in mind, providing an industrial grade, open source solution that works even in low-latency environments. We'd say that is the biggest differentiator between AMQP and Kafka, is that they both can handle high volume streams, but AMQP excels at also dealing with low-latency data exchange in environments where connectivity, bandwidth, and network availability is in question.

Think of AMQP as an industrial grade email system meant for systems, and instead of people sending hundreds of emails back and forth, AMQP is sending millions or billions of messages within large organizations, or used as a commodity level messaging solution connecting many different organizations. Providing them with a common messaging format that allows their systems to work together in a known, and secure way. Connecting many different systems and applications together in a way that allows them to communicate using a common message format.

Currently Streamdata.io is leveraging Server-Sent Events (SSE) to deliver streams, but as we work with more of our partners, and move further along in our roadmap we are supporting more standards like AMQP, as well as Kafka. Making sure we are able to connect to the existing solutions organizations are using to move data, content, and messages around their organizations, and with their partners. Connecting the dots for organizations, and helping them streamline how information moves around their operations using the existing services and tooling they are already putting to work at scale.

Learn how Capital One’s Virtual Card Numbers can benefit digital merchants and consumers.

Topics:
integration ,amqp ,kafka ,messaging protocol

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}