RabbitMQ and AMQP
I am one of the original core developers of RabbitMQ, http://www.rabbitmq.com/. RabbitMQ is an Erlang/OTP-based implementation of AMQP, the Advanced Message Queueing Protocol.
I worked on the project from its beginnings in 2006 up through 2010 when I decided to move on to other projects. I wrote much of the code in the first version of the server, and I’ve been involved with almost every aspect of the project, including documentation (I wrote big chunks of the user and developer manuals), consultancy, and giving talks at various venues explaining various aspects of the system.
Besides the core code, I’ve also written a number of extensions to the system:
-
a JSON-RPC object server providing a JSON-RPC interface to the AMQP protocol
-
an SMTP gateway (depending on Erlang SMTP server code), for injecting received emails into AMQP exchanges
-
an XMPP gateway, which can route messages to and from XMPP JIDs, letting people use their existing IM clients to communicate with RabbitMQ
-
RabbitHub, an implementation of PubSubHubBub that uses RabbitMQ as the hub implementation
I’ve also written a few AMQP client libraries, suitable for use with any AMQP 0-8 or 0-9-1 server, not just RabbitMQ:
-
Pika, a pure-Python implementation of AMQP 0-8/0-9-1 that tries to stay fairly independent of the underlying network library
-
a Smalltalk AMQP client that runs on Squeak smalltalk and speaks AMQP 0-8 and 0-9-1
The AMQP specification
I’ve also contributed to the AMQP specification development process: RabbitMQ is a member of the AMQP working group. I’ve personally spent time working on AMQP’s session management, batch acknowledgement protocols, transactional protocols, and on-the-wire binary message formatting.