The Apache Qpid XML Exchange
High speed, reliable enterprise messaging using open standards and open source
XML is widely used for messaging applications. Message-oriented Middleware (MOM) is a natural fit for XML messaging, but it has been plagued by a lack of standards. Each vendor's system uses its own proprietary protocols, so clients from one system generally can not communicate with servers from another system. Developers who are drawn to XML because it is simple, open, interoperable, language independent, and platform independent often use REST for messaging because it shares the same virtues. When XML developers need high-performance, guaranteed delivery, transactions, security, management, asynchronous notification, or direct support for common messaging paradigms like point-to-point, broadcast, request/response, and publish/subscribe, they have been forced to sacrifice some of the virtues that drew them to XML in the first place. Java JMS is an API, defined only for Java, and it does not define a wire protocol that would allow applications running on different platforms or written in different languages to interoperate. SOAP and Web Services offer interoperability if the same underlying protocols are used and if the same WSI-protocol is used by all parties, but at the cost of more complexity than a MOM system. And as the basic components of enterprise messaging have been added piece by piece to the original specifications, Web Services have become complex, defined in a large number of overlapping specifications, without a coherent and simple architecture.
The new Advanced Message Queueing Protocol (AMQP) is an open, language independent, platform independent standard for enterprise messaging. It provides precisely the coherent and simple architecture that has been missing for sophisticated messaging applications. Red Hat Enterprise MRG includes a multi-language, multi-platform, open source implementation of AMQP. We develop the messaging component as part of the upstream Apache Qpid project. In order to meet the needs of XML messaging systems, we contributed the Apache Qpid XML Exchange, which provides XQuery-based routing for XML content and message properties. Together, AMQP, Apache Qpid, and the Qpid XML Exchange provide a solid foundation for mission critical XML messaging applications.