Chapter 1. Introduction to MRG Messaging

In most environments, programs communicate by exchanging messages, much as people communicate by exchanging email. Unlike email, enterprise messaging systems provide guaranteed delivery, speed, security, and freedom from spam. Until recently, there was no protocol standard for enterprise messaging systems, so programmers either wrote their own, limited themselves to one language or platform, or used proprietary systems. Java JMS provided Java programmers with a common API, but Java JMS does not specify a protocol, so implementations are not interoperable unless they agree on a protocol, and Java JMS does not provide even an API for other languages.
AMQP (Advanced Message Queuing Protocol) is an open protocol standard for enterprise messaging, designed to make mission critical messaging widely available as a standard service, and to make enterprise messaging interoperable across platforms, programming languages, and vendors. Information about AMQP is available at the AMQP website. The AMQP 0-10 specification is available for download.
MRG Messaging is a high-speed reliable messaging distribution for Linux that includes an AMQP 0-10 messaging broker, AMQP 0-10 client libraries for C++, Java JMS, and Python, persistence libraries, and management tools. MRG Messaging is part of Red Hat Enterprise MRG, which provides Messaging, Realtime, and Grid functionality. Each of these components can also be used separately.
Apache Qpid (http://qpid.apache.org) is an Apache project that implements the AMQP protocol. MRG Messaging includes messaging components from Qpid.

1.1. AMQP Features

AMQP is the first open protocol standard for Enterprise Messaging. It is designed to support messaging for just about any distributed or business application. Routing can be configured flexibly, easily supporting common messaging paradigms like point-to-point, fanout, publish-subscribe, and request-response. AMQP messages can contain any kind of payload, including text, structured binary data, streaming media, or XML.
AMQP is carefully designed to avoid introducing performance bottlenecks or scalability issues, permitting highly optimized implementations that scale well as the number of clients, messages, or bytes increase. MRG Messaging can achieve hundreds of thousands of messages per second on typical servers, and over a million on highly optimized high-end servers communicating via Infiniband.
AMQP supports guaranteed delivery, transactions, distributed transactions, SASL client authentication, and replay and recovery in the event of a network failure.