DDS and AMQP

The Advanced Message Queuing Protocol (AMQP) is an OASIS standard message-centric protocol that originally emerged from the Financial Sector with the aim of freeing users from proprietary and non-interoperable messaging systems.  AMQP supports brokered message exchanges between device nodes and has been designed to address applications requiring fast and reliable business transactions.

Messaging Protocol Technologies Internet of Things

The key features of AMQP are message orientation, queuing, routing (including point-to-point and publish-subscribe), reliability and security.  AMQP mandates the behavior of the messaging provider and client to the extent that implementations from different vendors are interoperable.  AMQP is a wire protocol so that any product that can create and interpret messages that conform to this data can interoperate with any other compliant implementation irrespective of the programming language.

AMQP is a binary, application layer protocol, designed to efficiently support a wide variety of messaging applications and communication patterns.  It provides flow controlled, message-oriented communication with message-delivery guarantees such as at-most-once (where each message is delivered once or never), at-least-once (where each message is certain to be delivered, but may do so multiple times) or exactly-once (where the message will always certainly arrive and do so only once), and authentication and/or encryption based on SASL and/or TSL.  It assumes an underlying reliable transport layer protocol such as Transmission Control Protocol (TCP).

AMQP does not provide a specification for an industry standard Application Programming Interface (API) although there is now some work to define standard mappings between the AMQP protocol and common programming APIs (e.g. JMS).  It does however provide a specification for a standard wire protocol to describe how the messages should be structured and sent across the network.

The Object Management Group's (OMG) Data Distribution Service for Real-Time Systems (DDS) is an open middleware standard that enables scalable, real-time, dependable, high performance and interoperable data exchanges between publishers and subscribers.  It is based on a proven data-centric paradigm that emerged from Defense and Aerospace but which is now being rapidly adopted in sectors as diverse as Power Generation, large scale SCADA, Air Traffic Control and Management, Smart Cities, Smart Grids, Vehicles, Medical Devices, Modeling and Simulation, and Financial Trading.

DDS makes data a first class citizen in the system thanks to its extensive support for keys, lifecycle management etc.  DDS is brokerless and provides the abstraction of a virtual Global Data Space, a ubiquitous, universal and fully distributed data cache.  DDS also provides a standard API as well as an interoperable wire protocol.

Choosing AMQP for systems where a device needs to fan-out messages to perhaps thousands of other networked devices can result in poor performance and much complexity (e.g. requiring a multi broker configuration).  Unlike DDS, which provides support for automatic discovery, configuring a system that uses AMQP is through the broker.  Accessing the broker is usually via a well known network address or a lookup service.  If a broker is moved to a different server then clients must be re-configured to use the address of the broker’s new location.

Only DDS can provide the real-time, many-to-many, managed connectivity required by high-performance device-to-device applications.

A key component of the Vortex product suite is Vortex OpenSplice, the leading (open source and commercial) implementation of the OMG DDS standard.