Updated: 2009-04-17
Using message queues effectively can significantly improve the efficiency and responsiveness of applications. Ruby programmers are lucky to have many messaging options to choose from, but are cursed with having to pick between them. These documents and source code samples attempt to provide basic information to help Ruby programmers better understand these alternatives.
- Comparison table of message queues
- ActiveMQ with Stomp
- Beanstalkd
- Delayed::Job
- Kestrel
- MemcacheQ
- RabbitMQ with AMQP
- Sparrow
- Starling
I have not used most of these messaging systems outside this evaluation, so please perform your own analysis before making an important decision. I'll gladly incorporate additional information and corrections that you send me so that I can accurately represent each alternative.
The naive benchmark does NOT acurately represent the performance of these systems under a realistic workload. This naive benchmark simply has a single client making sequential calls, whereas a realistic workload would include a large number of clients working in bursts. For example, Starling is much faster than Kestrel when talking to a few clients, while Kestrel is allegedly much faster than Starling when talking to a large number of clients.