AMQP is a general-purpose messaging architecture. It is an open specification for pervasive, message-oriented integration, providing specifications for both the broker capabilities and the wire-level format for asynchronous, secure, portable and efficient integration. Though many networking protocol scenarios have been addressed with open standards, a large gap has existed in common guaranteed-delivery messaging middleware. Such middleware is a necessary utility, underpinning mission-critical IT systems and playing a key role in automating business processes in organizations of all sizes. The AMQP specification fills the gap and enables complete interoperability for messaging middleware by addressing both the network protocol and the semantics of the broker services. AMQP is being developed by The AMQP Working Group (http://www.amqp.org), which consists of both users and vendors, and AMQP is also being implemented today in Open Source software.
In short, AMQP makes it easy to get applications talking together across a network (or indeed on the same system). At a functional level, applications send messages to exchanges, which route them into queues, which deliver them to other applications. AMQP uses a message broker to do the hard work, and it is often such that the broker will run on its own server, routing messages to cooperating process as required, in a highly efficient and reliable manner.
OpenAMQ (http://www.openamq.org) is iMatix's AMQP server and client. OpenAMQ is a message broker plus client libraries for C/C++ and JMS (bindings for numerous other languages have also been developed). OpenAMQ provides a simple and powerful API called WireAPI, remote administration tools, one-line failover, instant federation, protection against slow clients, detailed logging, and numerous other features that are demanded by the largest and smallest of users. OpenAMQ is a mature and well-proven AMQP implementation capable of good levels of performance (it has been benchmarked at 590,000 messages per second, 185μs latency).
RestMS (see http://www.restms.org/) is a scalable, cacheable, and simple general-purpose messaging protocol for the Web. It is AMQP, but RESTful (see http://en.wikipedia.org/wiki/Representational_State_Transfer and references contained therein), working over plain HTTP. RestMS simplifies AMQP application development and enhances the AMQP model, introducing feeds, pipes, and joins. Zyre (http://www.zyre.com) is iMatix's RestMS server, talking HTTP on one side and AMQP on the other. Zyre leverages iMatix X5 HTTP server, which is based on the award wining Xitami Web server (see http://www.xitami.com/).
The proven performance, fault tolerance, and robustness of OpenVMS make AMQP and OpenVMS are an ideal combination. OpenVMS has been deployed in many mission-critical and other environments for many years, with messaging being one of the primary applications. The demand for the integration of OpenVMS with other systems (including other OpenVMS systems), is rising as the world demands standards-based solutions that may be deployed on practically any platform. In addition, client APIs should be available for all major languages. The advent of SOA and its associated SOI methodology has accelerated the adoption of service-oriented solutions and facilitated the modernisation of existing applications; queuing provides an elegant method of combining pieces from one application with those of another, thus creating a new, composite, application. As such OpenVMS provides an excellent platform for AMQP-based applications, be it for high-performance, reliable messaging or simple integration. The addition of Zyre and RestMS to the OpenAMQ technology stack further enhances the potential for AMQP-based messaging solutions in the OpenVMS environment, and opens up a whole new realm of possibilities. This is software not just for large enterprises, but is equally appropriate for smaller organisations looking for a high-quality integration solution.
by Brett Cameron