London Erlang User Group – RabbitMQ and multi-protocol messaging: Brett Cameron & Eric Newcomer

By Erlang Central | Published: June 5, 2015

Speakers: Brett Cameron & Eric Newcomer

RabbitMQ is a popular 100% Erlang-based Open Source message queuing system that implements the Advanced Message Queuing Protocol (AMQP). It has been estimated that there are 35,000+ production deployments of RabbitMQ across the globe, and this number is continuing to grow. Most of these deployments are business-critical, underpinning everything from internet-based pizza ordering systems through to providing the central nervous system for OpenStack-based cloud deployments.

RabbitMQ natively supports version 0.9.1 of AMQP; however, a somewhat overlooked capability of RabbitMQ is its ability to also readily provide support via a flexible plugin architecture for a variety other popular Open Source message queuing protocols, including STOMP, MQTT, and RESTful messaging via the RabbitHub plugin. Most good message queuing protocols share many features in common; however some are better suited to a particular set of use cases than others. This ability of RabbitMQ to seamlessly receive and propagate messages simultaneously via multiple protocols is an extremely powerful facility, and one that affords great flexibility. For example, it means that it is possible to use the most appropriate protocol for a particular function or to simultaneously use different protocols to disseminate the same data to different types of users via the most appropriate protocol without having to develop and maintain any separate gateway components.

Having been involved with the early days of the AMQP working group, and having written books in related areas, Eric Newcomer will start by talking a little about the history of AMQP (the primary protocol used by RabbitMQ) and about message queuing in general.

Brett Cameron will then discuss the multi-protocol features of RabbitMQ and how the capabilities of Erlang have been utilised to implement the powerful RabbitMQ plugin architecture. An overview of the plugin architecture will be presented along with examples of its use to implement a robust and highly scalable multi-protocol Open Source messaging hub.

The talk will end with a few future-looking thoughts and a Q&A session.

About Brett Cameron

Brett Cameron works as a senior software engineer at VMS Software Inc. (VSI,, helping to define and implement the company’s Open Source strategy for the OpenVMS operating system. Before joining VSI Brett worked as a senior software architect with HP’s Cloud and Enterprise Services groups. Brett lives in Christchurch, New Zealand and has worked in the software industry since 1992, and in that time he has gained experience in a wide range of technologies, many of which have long since been retired to the software scrapheap of dubious ideas. Over the past decade Brett has spent considerable time travelling the world helping organisations to modernize their legacy application environments and to better leverage Open Source technologies. In more recent times, his involvement with various Open Source projects and his work in the cloud computing space has caused him to develop a liking for functional programming languages, and Erlang in particular, which he has ported to several exotic operating systems such as OpenVMS, to which he has also ported various Erlang applications such as RabbitMQ and Riak. Brett holds a doctorate in chemical physics from the University of Canterbury, and maintains close links with the University, delivering guest lectures and acting as an advisor to the Computer Science and Electronic and Computer Engineering departments on course structure and content. In his spare time Brett enjoys listening to music, playing the guitar, and drinking beer.

About Eric Newcomer

Eric is global head of Architecture and Validation Management Services for Citi’s Treasury and Trade Services division. Before that he was Chief Architect, Investment Banking IT, at Credit Suisse. And before that he was CTO at IONA Technologies, where among other activities he helped create the AMQP Consortium and served as a founding member. He was also a Consulting Engineer at Digital Equipment Corporation in the capacity of Transaction Processing Architect, among other things part of the committee that created the XA standard. At IONA he helped create Web services and also co-authored the WS-Transactions specification, for which he should not really take all the blame.