Un Projet fort intéressant, supporté par la fondation Mozilla, qui permet de s’interfacer avec un grand nombre de langages. Et ce sur de nombreuse Plateforme (Windows, Linux, VMS …)
Je recopie la présentation des fonctionalités, en anglais, mais très complète.
- Alexis’ Introduction to RabbitMQ
Alexis’ presentation at Thoughtworks ‘London Geek Night’, May 2009, where he introduces RabbitMQ “An open source message broker that just works”. - Introduction to AMQP and Messaging with RabbitMQ
Presentation by Dmitriy Samovskiy on slideshare.net. Good primer on AMQP messaging concepts and RabbitMQ in general. - The RabbitMQ Team’s Introduction to RabbitMQ and AMQP
A video of the RabbitMQ team presenting their Tech Talks at Google London, Oct 2008. Alexis explains what is meant by messaging and why you might need a messaging broker. Matthias provides a technical overview of the RabbitMQ broker and why Erlang was the right choice to implement it. Tony then discusses the future of RabbitMQ and AMQP with a focus on messaging at internet scale. - A technical look at RabbitMQ and Erlang
Matthias’ slides from a talk at FITEclub in 2009 where he presents a technical overview of RabbitMQ - Getting Started with AMQP and RabbitMQ
Article on infoq.com by Joern Barthel that provides an excellent discussion the AMQ model and its implementation in RabbitMQ. Lots of code examples are provided in Ruby. - RabbitMQ: python and ruby staring at the looking glass
A slide show from Paolo Negri that offers an excellent introduction to the AMQP model and RabbitMQ with code samples in python and ruby. He explores the different routing models available and goes on to explain a number of use cases and some common messaging patterns, including pubsub. - The Attention Deficit Disorder Guide to RabbitMQ
Blog post for those who want to get started with RabbitMQ quickly and easily. Assumes you know the basics about messaging and AMQP. - Installing RabbitMQ
Video showing how to get a RabbitMQ server installed and running in 20 seconds. - RabbitMQ and Messaging in General
Slides from a presentation by Lenz Gschwendtner at erlounge in Wellington, July 2009. Another great introduction. - Rabbits and Warrens
Blog post. Provides and excellent introduction to messaging, RabbitMQ, AMQP and using them with Python. Well worth a read for ophidians and non-ophidians alike. - Wikipedia on AMQP
Read all about AMQP including the origins of the protocol, the AMQP model and the other specifications that cover the same or similar space as AMQP. - Databases Suck for Messaging
Slides from presentation given by Alexis at Oxford Geek Night, May 2009. Examination of why messaging architectures beat database polling for pubsub. - What problem does messaging solve?
A Q&A discussion that covers a variety of use cases for messaging. - RabbitMQ Internal Architecture
Talk by Tony Garnock-Jones at Google London, May 2009. Explains the internals of RabbitMQ and how RabbitMQ can be used in federation and achieving redundancy for high availability. - Une alternative à JMS?
An excellent introduction, in French, to messaging with AMQP. (Or read the English translation, which is almost as good.) - RabbitMQ on del.icio.us
We present a list of useful searches on the social bookmarking site.
Specific Configurations
We support numerous operating system platforms. RabbitMQ is available for numerous Linux and Unix formats – see the full list on our download page. RabbitMQ is available as a Windows package where it can be run as a service. RabbitMQ installs have been created by the community for OpenSolaris, MacOSX, BSD and Gentoo. Please contact us if you cannot find what you need.
- Java development:
- Java client
- Java API-guide
- RabbitMQ Java Client for Beginners
- Spring AMQP project for Java
- A simple messaging application using RabbitMQ and Maven
- Java JMS
- RabbitMQ/AMQP OSGi Integration
- OSGi patches to rabbitmq-java-client plus some things to know
- Community contributed Spring Framework code: AMQP/Spring and Spring-RabbitMQ
- Using RabbitMQ with Spring
A presentation outlining how to configure RabbitMQ using the Spring framework - Introduction to OpenCredo’s Spring Integration Kit for RabbitMQ
- amqp-relay
A simple service to relay all messages from a topic exchange to another RabbitMQ broker instance. - Using RabbitMQ with Groovy
- Grails RabbitMQ plugin and accompanying blog post
- Using RabbitMQ with Mule
A description of the Mule Erlang Transport showing how you can interface with RabbitMQ from Mule (the post talks about user provisioning on RabbitMQ as a case study). - RabbitMQ Java development on del.icio.us
- Ruby development:
- Client overview
- Ruby/EventMachine AMQP client
- JRuby client
- Bunny, a synchronous AMQP client and this fork of bunny
- Carrot, a synchronous AMQP client
- Lizzy, a lightweight agent system using RabbitMQ from Ruby
- Google ruby-amqp group
- Nanite self assembling fabric of ruby daemons
- Bunnicula a simple AMQP relay implemented as a ruby daemon (similar in intent to shovel)
- Rabbitbal a reverse proxy for Rails (as well as other web frameworks, not necessarily limited to Ruby)
- Workling now supports RabbitMQ
- RabbitMQ with Passenger and other frameworks
- Rails and RubyCocoa demo application shown as part of a presentation about Messaging/RabbitMQ at the Melbourne Ruby group
- Get started with AMQP and Ruby
A simple and very clear example of using a message queue synchronously from Ruby - El Conejo Mensajero (The Rabbit Messenger)
A presentation (in English) by Joshua Sierles of 37signals giving an overview of RabbitMQ and listing lots of uses cases, mostly in Ruby - Bits, Bytes and Bobs
A video introduction and review of best practices for dealing with binary data in Ruby with Memcached and RabbitMQ - Denormalizing Your Rails Application
A video presentation and slides from the Scottish Ruby Conference 2010 by Daniel Lucraft and Matt Wynne - RabbitMQ on Ruby Reflector
Posts about RabbitMQ on the Ruby social news website - Assembling an event driven daemon with RabbitMQ
- RabbitMQ Ruby development on del.icio.us
- Python development:
- Introduction
- pika, a pure-Python AMQP 0-8 and 0-9-1 client
- py-amqplib client library code
- txAMQP: Twisted AMQP
- Building RabbitMQ apps using Python
- Messaging with txAMQP, a tutorial
- Orbited, JavaScript/HTML socket in the browser
- Flopsy, simplify working with AMQP and Python
- Carrot, easy RabbitMQ messaging queue support for Django and pure Python
- Celery, a distributed task queue for Django and pure Python
- Canonical Voices on AMQP
A great series of tutorial articles by Canonical covering AMQP, RabbitMQ and txAMQP. - RabbitMQ Python development on del.icio.us
- .NET development:
- Overview of RabbitMQ developement with .NET
- Getting Started with RabbitMQ in Windows using C#
A simple, step-by-step guide to get started with RabbitMQ using a “Hello World” example in C# - .NET Client Library User Guide
- Spring AMQP project for .NET
- .NET NServiceBus client
- RabbitMQ .Net development on del.icio.us
- PHP development:
- PHP manual page for AMQP
- php-amqp – a client developed and used by StudiVZ, originally based on RabbitMQ-C
- php-rabbit
- php-amqplib a port of py-amqplib
- php-amqplib a fork of php-amqplib updated to support PHP 5.3
- PECL release of the AMQP client
- RabbitMQ PHP development on del.icio.us
- MacOSX development:
- Perl development:
- Code for Net::AMQP
- POE::Component::Client::AMQP
- Net::RabbitMQ
- RabbitFoot
- test-net-rabbitmq, a very simple mock broker for Net::RabbitMQ
- RabbitMQ Perl development on del.icio.us
- Web messaging:
- Webhooks for RabbitMQ
A plugin for RabbitMQ that allows you to forward messages to configurable URLs - as3-amqp
an AMQP client library in AS3 for Flex and Flash - hxamqp
a port of as3-amqp to haXe - Integrating Flex and RabbitMQ using STOMP
describes how to get Flex/Flash applications talking to RabbitMQ using STOMP - amqp-js
A native AMQP library for Javascript that provides low-latency message queuing without using HTTP. - rabbithub
an implementation of Google Pubsubhubbub for HTTP web push - PubSubHubbub on Ruby Reflector
Posts about PubSubHubbub with only a mild Ruby bias - We provide RabbitMQ plugins that expose a JSON/RPC endpoint and AMQP-over-HTTP binding for interacting with RabbitMQ over HTTP
- node-amqp
Node.js and RabbitMQ - AMQP with Kaazing Enterprise Gateway and Microsoft Silverlight
Set up AMQP messaging direct from the browser with Kaazing’s AmqpClient for Silverlight
- Webhooks for RabbitMQ
- C development:
- Experimental RabbitMQ-C client
- You can also try this community C Client and a port of this client to d
- An ANSI C compliant library providing a C language interface to RabbitMQ
- Erlang development:
- Erlang client guide
- Erlang examples
- See also RabbitMQ Couch Relay
- gen_bunny, an easy to use AMQP Erlang client based on the rabbit-erlang-client
- Lisp development:
- de.setf.amqp a Common Lisp client library for AMQP
- CL-RABBIT an interface from LispWorks to RabbitMQ
- RabbitMQ Lisp development on del.icio.us
- Haskell development:
- An AMQP client for Haskell
- Haskell and RabbitMQ, a get started guide
- RabbitMQ on OpenVMS
- RabbitMQ on OpenVMS describes a port of RabbitMQ to the OpenVMS operating system
- Brett Cameron and John Apps’ slides from the OpenVMS 2010 Spring Meeting
- The RabbitMQ on OpenVMS blog
- RabbitMQ Script Exchange Plugin
Extends RabbitMQ server with support for running arbitrary scripts (python, ruby, javascript) for each message passing through the exchange. - Stomp
- XMPP adaptor. See also “rabbiter“, an experiment in decentralised microblogging
- Scala/Lift
- RabbitMQ and Scala – a popular tutorial and screencast that should be of interest for users of other languages too.
- CL-RABBIT, an interface from LispWorks to RabbitMQ
- rabbitmq-memcached
A memcached adapter for RabbitMQ that allows you use the memcache protocol to get or publish a message from or to RabbitMQ. - amqp-utils
Command line utils for interacting with an AMQP based queue. - amqp-relay
A simple service to relay all messages from a topic exchange to another RabbitMQ broker instance. Think of Shovel, just in Scala. - RabbitCage
An AMQP firewall which allows you to restrict user access to RabbitMQ using ACLs. - pg_amqp
An AMQP extension for PostgreSQL. - Fudge Messaging Format
Fudge is a data encoding system that is hierarchical, typesafe, binary and self-describing. It works with HTTP, JMS and AMQP. - amqpfs
AMQP file system interface - RabbitMQ Clients on del.icio.us
More links to various client configurations on the social bookmarking site.
Cloud Configurations
- Cloud Messaging Use Cases
Alexis’ presention on use cases for cloud messaging at the Cloud and Grid Exchange 2010. The talk discusses what is messaging and why it is useful for cloud computing by way of illustrating use cases from RabbitMQ customers. (Download a PDF of the slides, 3.2MB). - A World Made of Messages
James Governor discusses how messaging in the cloud, specifically with RabbitMQ, is changing the way applications are architected. The slides on that page (by Matt Biddulph) are definitely worth a look. - Generating Thousands of PDFs on EC2 with Ruby
Describes how it is possible to leverage the cloud and RabbitMQ to scale-out a massive PDF generation task. - Replacing Amazon SQS with something faster and cheaper
Illustrates the use of RabbitMQ as a alternative to SQS for message queuing on AWS. - Idiot’s Guide to Linux on Amazon EC2
Walk through of how to set up Ubuntu for use with RabbitMQ on AWS. - Run RabbitMQ on EC2
Describes how to get started with RabbitMQ on Amazon’s EC2. - Scaling your Python application on EC2
“A video presentation from Py Con 2010 on how Reddit scaled as its traffic doubled using the Amazon cloud and messaging. The slides are also available as a PDF. - TwitYourl-Map/Reduce in CEP Land
Video about how to do complex event processing to derive intelligence about twitter streams. Uses RabbitMQ on EC2. - RabbitMQ Cloud Use Cases on del.icio.us
More links to cloud use cases at delicious.com.
Management and Monitoring
Management and monitoring capabilities are provided by rabbitmqctl and the management plugin.
In addition there are several community-maintained tools. Please treat these as experimental and send feedback to the list.
- RabbitMQ Management Plugin
The management plugin provides a web interface and HTTP API for managing and monitoring RabbitMQ. - RabbitMQ Administration Console
RAC is an administration console for RabbitMQ written in PHP. (See this screenshot). - Alice and Wonderland
Provide RESTful administration and monitoring of RabbitMQ nodes and a WebUI. Please read the release notes first. - Chef Cookbook
Ben Black’s cookbook for managing RabbitMQ with Chef. - RabbitMQ SNMP Plugin
An experimental RabbitMQ plugin to provide SNMP statistics, developed by Scott Brooks. It includes the ability to trace message delivery to queues so that you can pull the total number of messages delivered. - Monitoring RabbitMQ with Zabbix
A simple example of how to configure Zabbix (an open source monitoring and graphing tool) to keep track of the number of messages pending delivery and the total number of queues. - Humpty
A Sinatra/Ruby application to administer RabbitMQ over REST (via alice) and AMQP. - AMQP Event Monitor on Zenoss
A daemon for monitoring AMQP with Zenoss - Cony
A HTTP based service written in Python for providing insight into running RabbitMQ processes. - Trixx
An administration and monitoring tool written in Clojure so available for all languages that run on JVM. - RabbitMQ Management and RabbitMQ Monitoring on del.icio.us
More links to what others are doing to manage and monitor RabbitMQ.
Messaging Patterns and Common Scenarios
- Building an Event-driven Architecture using RabbitMQ, Spring AMQP and Spring Integration
Shane Witbeck describes a proof of concept in which he demonstrates how these open source technologies combined with proven enterprise integration patterns results in code that is easier to maintain, easier to test and is faster than the legacy system it replaces. - High Availability AMQP Messaging With Redundant Queues
Introducing Beetle – a high availability messaging solution that uses a redundant configuration combined with message deduplication to boost reliability. - Patterns for Messaging with RabbitMQ
Scott Brooks presents an overview of the AMQ model and goes on to describe some advanced topics. He highlights a set of common messaging use cases with RabbitMQ including delayed job queues, event logging, back-end decoupling and cross platform interoperability. - Multiprotocol Asynchronous Job Server
Tomas Doran builds an AMQP- and JSON-based job and event server with RabbitMQ (code available on github). The presentation contains an excellent introduction to AMQP and examples of why you might need messaging in your application. - Interoperability with RabbitMQ
Alvero Videla explains how RabbitMQ is the perfect solution to the interoperability problem where different applications need to work together to share real time data at scale. - User Interaction with RabbitMQ using MagooClient
MagooClient – a SOA/MOM client aimed primarily at XML-based applications – now comes with a RabbitMQ transport. This allows MagooClient to be plugged into a RabbitMQ architecture providing an instant user client for prototyping, testing or scenarios where direct user interaction with exchanges is required. No coding necessary and topic/direct exchange models are fully supported. - Using RabbitMQ Beyond Queuing
Dmitriy Samovskiy blogs about how RabbitMQ can be used beyond simple queuing and pubsub. Gets you started on the path to “achieve a distributed messaging nirvana”. - Advanced Messaging & Routing with AMQP
Ilya Grigorik explains how to get started with AMQP in Ruby and provides some advanced AMQP recipes for a variety of messaging use cases. - RabbitMQ, Celery and Django
Robert Pogorzelski gives an excellent demonstration of how RabbitMQ and Celery can be used with Python to build an asynchronous, distributed task queue for your web application. - Message Queues, Django and Celery QuickStart
Rich Leland’s quick start guide provides a great explanation of how to set up an asynchronous task queue with RabbitMQ, Celery and Python, all on a Mac. - Common Messaging Patterns (.NET Client Library User Guide)
Whether or not you use .NET, section 3 of this guide describes ways of working with AMQP and a number common messaging patterns and interaction styles. - Listening to the System
Blog post from Ben Hyde examining some ideas how topic routing in AMQP is a good solution for building a message hub for real-time monitoring. - Integration with Graphite
Tools written in Python that facilitate sending data to Graphite via RabbitMQ rather than connecting directly via TCP. Demonstrates how the AMQP model decouples produces and consumers of data. - Drizzle replication using RabbitMQ
Marcus Eriksson has implemented a transaction log replicator for Drizzle using RabbitMQ as the transport. (See also the updated post and the follow up Better replication from Drizzle to Cassandra.) - Messaging Patterns on del.icio.us
See more links to articles on messaging patterns at delicious.com.
Specific Use Cases and Examples
- RabbitMQ, node.js and Java
James Carr creates a sample application demonstrating how RabbitMQ and Spring-AMQP can be used to connect a website written in node.js to established JEE infrastructure using an asynchronous, event-driven architecture. - Social Networks and the Richness of Data [PDF 9.2 MB]
An excellent presentation describing how scale social network activity streams with RabbitMQ, Redis and NoSQL in general. - Unibet [PDF 10.3 MB]
Stefan Norberg’s presentation on use of RabbitMQ and Kaazing and Terracotta for European scale real time betting at Unibet. - NASA’s NEBULA Cloud Computing Platform
Overview of how NASA are using RabbitMQ in their Nebula SaaS platform. Please also see this interview with The Register and these slides from Chris C. Kemp, the CIO of NASA Ames Research Center, and the thought-leader behind the NEBULA project. - Application of RabbitMQ at the BBC
Video of a talk by Mike Bridgen at Google London, May 2009, where he illustrates how RabbitMQ can be used within a real world application integrating the news feeds at the BBC. - Untangling the BBC’s data feeds
More on the use of RabbitMQ at the BBC on Mike Bridgen’s blog. - RabbitMQ at Smarkets
Video and slides of Hunter Morris’ tech talk at Erlang Factory, London, July 2009 explaining how Smarkets use RabbitMQ in their backend stack. - Soocial.com run RabbitMQ on Amazon EC2
Soocial.com provide an address book and contact management solution running on the Amazon Elastic Compute Cloud. They use RabbitMQ as their message bus to move data between their service and mobile devices. - Use Cases on del.icio.us
See more links to articles on RabbitMQ use cases at delicious.com.
Going Further
- Advanced Message Queuing Protocol
More information on the open standard from the AMQP working group. - RabbitMQ Source Code Repository
Browse the source. - HOWTO: Set up a RabbitMQ cluster and enable plugins
A beginners guide to RabbitMQ explaining how to set up a cluster of RabbitMQ brokers and enable plugins. - HOWTO: Take control of cluster management
Describes how to configure rabbitmq.conf to pass environment variables to the Erlang runtime with the goal of simplifying the management of RabbitMQ clusters. - HOWTO: Build Your Own AMQP Client
Gives implementers an overview of the considerations that may influence design decisions in their target language. - HOWTO: Build a RabbitMQ Management Console
Walk through of how you might build a RabbitMQ management tool. - HOWTO: Extend RabbitMQ with custom exchange types [PDF 7MB]
Tony Garnock-Jones’ slides from Erlang Factory SF 2010 that explain how you can build your own custom exchange implementations to extend the functionality of RabbitMQ. - RabbitMQ’s Protocol Code Generator
Browse the source code used to auto-generate AMQP base classes from the protocol specification.
Blogs, Forums and Social
- LShift’s Blogs
Read the blogs of the developers behind RabbitMQ. - Ben’s Blogs
Ben is a developer at LShift and is a contributor to the RabbitMQ project. - Dmitry’s Blogs
Dmitry is the author of rabbitbal, a reverse proxy for Rails and other frameworks, and blogs a lot about RabbitMQ. - Of Bunny and AMQP
The blog of Chris Duncan, author the the Bunny AMQP client for Ruby. Good place to look if you’re using AMQP with Ruby. - Daniel DeLeo’s Blog: Kallistec
Daniel is the author of Qusion – “an AMQP made-easy” library for Ruby. He regularly blogs on a variety of subjects including AMQP, RabbitMQ and Ruby. - Read what people are saying about RabbitMQ on Twitter
- Get the latest buzz about RabbitMQ on Addict-o-matic
- Join our mailing list (or see the archived messages)
- Talk to us on irc.freenode.net #rabbitmq (or see the logs) You can use this web interface to freenode if you don’t have an IRC client installed.
Books and Print Articles
- AMQP with RabbitMQ
An article in the Railsway Magazine, Issue 1, 2010: Messaging in Ruby with the AMQP broker RabbitMQ - Distributed programming with Ruby
See the chapter on ‘Implementing comprehensive enterprise messaging with RabbitMQ and AMQP’.
General Posts
- Can AMQP break IBM’s monopoly on middleware: Part 1, Part 2, Part 3
Three part series from Open Enterprise on messaging middleware and AMQP. Includes an interview with RabbitMQ’s very own Alexis Richardson. - The potential for AMQP in financial services
Datamonitor talk about the five user patterns for AMQP messaging and how they might be applied in financial services. - AMQP will play a crucial role in the future of complex event processing
Mark Palmer, CEO of StreamBase, predicts that interoperability between AMQP-enabled systems – particularly RabbitMQ – will play a major role in the evolution of innovative event-based processing stacks. - You Might Need Messaging If…
A short presentation from Bob Pasker on what messaging systems are for. - Toward a commodity enterprise middleware
Article in ACM Queue from June 2007 by John O’Hara, one of the orginal creators of AMQP. John discusses the origins of AMQP, how it came to be, and how you might go about integrating AMQP messaging with legacy middleware. The article entitled ‘Toward a Commodity Enterprise Middleware’ begins on the 50th page of the PDF. - Advanced Message Queueing Protocol
Presentation from Pranta Das from Cisco giving a good background on AMQP, an overview of the the new information model in AMQP 1.0 and some general use cases for AMQP messaging. - Asynchronous Processing with Ruby on Rails
Jon Dahl’s presentation at Rail Conf 2008 describes why asynchronous processing is important and explains why messaging is useful here. - Henry Ford & Event Driven Architecture
Ilya Grigorik explains how to scale your application with events and suggests that a little “AMQP kung fu” may help. - AMQP and Apache Qpid
Microsoft discuss the challenges of enterprise messaging in a heterogeneous environment, and make a business case for AMQP, with Qpid as the example broker - To AMQP or to XMPP, that is the question
Blog post by Kenneth Kalmer comparing AMQP and XMPP as messaging protocols. - A report of high performance tested by Intel in 2007
Report of load testing of RabbitMQ conducted with Intel and an analysis by one of our team. - AMQP 1.0 User’s Charter and Scope
Details the requirements for AMQP 1.0 from the perspective of organisations investing in AMQP deployments.