add by zhj: 文中不仅列出了最常用的MQ,而且还列出了一些文章,分享使用的经验,值得一看
About
There are many queueing systems out there. Each one of them is different and was created for solving certain problems. This page tries to collect the libraries that are widely popular and have a successful record of running on (big) production systems.
The goal is to create a quality list of queues with a collection of articles, blog posts, slides, and videos about them. After reading the linked articles, you should have a good idea about: the pros and cons of each queue, a basic understanding of how the queue works, and what each queue is trying to achieve. Basically, you should have all the information you need to decide which queue will best fit your needs.
The whole site is open source and is updated quite frequently. If you find any mistakes or see something missing, feel free to post an issue or send a pull request. All contributions are welcome! Thanks.
Projects
ActiveMQ
- JAVA
Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server.
Resources
Apollo
http://activemq.apache.org/apollo/
- JAVA
- AMQP
ActiveMQ‘s next generation of messaging.
Resources
- Apollo Next Generation Message Queuing Posts Some Impressive Benchmarks infoq.com
- Introduction to ActiveMQ Apollo slideshare.net
- Introducing Apache Apollo: Part I christianposta.com
- Introducing Apache Apollo: Part II christianposta.com
Beanstalkd
http://kr.github.io/beanstalkd/
- C
Beanstalkd is a simple, fast work queue.
- Created to improve the response time for the Causes on Facebook app.
- Written in C is very fast and lightweight.
- It provides simple protocol, inspired by memcached
- Queues have O(log n) time push and pop operations.
- It can be run in persistent mode, which will write all jobs to binlog.
- Long list of client libraries for many languages
Resources
- #243 Beanstalkd and Stalker - RailsCasts railscasts.com
- What are the advantages and disadvantages of Beanstalkd as a work queue? at Quora quora.com
- Beanstalk Messaging Queue nubyonrails.com
Celery
- PYTHON
Distributed Task Queue
Resources
- Using Celery for queuing requests blog.serverdensity.com
- An Introduction to Celery by Gilang Chandrasa (slides) speakerdeck.com
- Celery - Best Practices denibertovic.com
Crossroads I/O
- C
- ZEROMQ
Crossroads I/O (‘libxs‘) is a library for building scalable and high performance distributed applications. It fits between classic BSD sockets, JMS/AMQP-style message queues, and enterprise message-oriented middleware.
Resources
- Crossroads I/O core library source code github.com
- ZeroC ICE vs 0MQ/ZeroMQ vs Crossroads IO vs Open Source DDS stackoverflow.com
- ANNOUNCE Crossroads I/O release 1.0.0 lists.zeromq.org
- ZeroMQ vs Crossroads I/O stackoverflow.com
Darner
https://github.com/wavii/darner
- CPP
simple, lightweight message queue
Resources
- Darner, Wavii’s new queue server: 10x faster, 10x smaller wavii.wordpress.com
- How do Darner and RabbitMQ compare? at Quora quora.com
Delayed::Job
https://github.com/collectiveidea/delayed_job
- RUBY
- MYSQL
Database based asynchronously priority queue system
Resources
- #171 Delayed Job - RailsCasts railscasts.com
- Do It Later With Delayed Job. therailsway.com
- Delayed Jobs Callbacks and Hooks in Rails salsify.com
Gearman
- C
Gearman Job Server
Resources
- What Powers Instagram: Hundreds of Instances, Dozens of Technologies instagram-engineering.tumblr.com
- Gearman and ZeroMQ, two different animals speakerdeck.com
- Gearman: A Job Server made for Scale (Presentation) slideshare.net
- Scalable architecture with Gearman job server. cirello.org
- Installing, configuring and running Gearman Job Server + PHP on Ubuntu modernfidelity.co.uk
- Playing with Gearman toys.lerdorf.com
- Notes on using Gearman with Python saltycrane.com
HornetQ
- JAVA
- AMQP
- JMS
An open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system.
Resources
- Building a Distributed Messaging System at Groupon engineering.groupon.com
- Leveraging the HornetQ Message Broker at Shopzilla slideshare.net
- Getting Started with HornetQ 2.3 java.dzone.com
IronMQ
- GO
- SERVICE
IronMQ is an easy-to-use highly available message queuing service. It is available as a cloud service on Amazon and Rackspace as well as on-premise with Iron.io‘s enterprise offering. Features include a nice dashboard to manage queues, easy to create webhooks, unicast and multicast Push Queues, autoscaling alerts for worker processes, and error queues.
Resources
- Push Queues for Reliable Messaging blog.iron.io
- Using IronMQ for Delayed Processing and Increasing Scale developer.rackspace.com
- Message Queues: Comparing Beanstalkd, IronMQ and Amazon SQS sitepoint.com
- Using IronMQ as a Celery Broker celery.readthedocs.org
- Laravel 4 + IronMQ Push Queues blog.iron.io
- Using IronMQ as a DelayedJob Broker blog.iron.io
Apache Kafka
- JAVA
Apache Kafka is publish-subscribe messaging rethought as a distributed commit log.
Resources
- Open-sourcing Kafka, LinkedIn’s distributed message queue blog.linkedin.com
- Kafka: The Great Logfile in the Sky by John Pignata (slides) speakerdeck.com
- Apache Kafka - distributed publish-subscribe messaging system - Morten Kjetland (video) vimeo.com
- Running a Multi-Broker Apache Kafka 0.8 Cluster on a Single Node michael-noll.com
- Introduction and Overview of Apache Kafka, TriHUG July 23, 2013 [Presentation] slideshare.net
- Intra-cluster Replication in Apache Kafka engineering.linkedin.com
Kestrel
http://robey.github.io/kestrel/
- SCALA
simple, distributed message queue system
Resources
- Scarling » Kestrel - Robey robey.lag.net
- Kestrel in Production at Papertrail blog.scoutapp.com
- Misleading Title About Queueing railstips.org
- Don‘t Forget About the Kestrel Messaging Queue java.dzone.com
nanomsg
- C
- ZEROMQ
nanomsg is a socket library that provides several common communication patterns
Resources
- Getting Started with ‘nanomsg‘ tim.dysinger.net
- Nanomsg: ZeroMQ done right hguemar.fedorapeople.org
NSQ
- GO
realtime distributed message processing at scale
Resources
- NSQ: realtime distributed message processing at scale at bit.ly blog word.bitly.com
- NSQ - NYC Golang Meetup by Matt Reiferson (slides) speakerdeck.com
- Stream Processing: Philosophy, Concepts, and Technologies (slides) speakerdeck.com
- Go Advent Day 22 - A Journey Into NSQ blog.gopheracademy.com
Apache Qpid
- JAVA
- AMQP
- CPP
Apache Qpid™ makes messaging tools that speak AMQP and support many languages and platforms (in C++, Python, Java JMS and .NET)
Resources
- Performance comparison between ZeroMQ, RabbitMQ and Apache Qpid stackoverflow.com
- RabbitMQ vs Apache ActiveMQ vs Apache qpid bhavin.directi.com
- Programming in Apache Qpid access.redhat.com
- QpidComponents.org is an open source development community dedicated to plugins and tools for enterprise-grade messaging in Apache Qpid qpidcomponents.org
queue_classic
https://github.com/ryandotsmith/queue_classic
- RUBY
- POSTGRES
Simple, efficient worker queue for Ruby & PostgreSQL.
Resources
- queue_classic by Ryan Smith (slides) dl.dropboxusercontent.com
- #344 Queue Classic - RailsCasts railscasts.com
RabbitMQ
- ERLANG
- AMQP
Robust messaging for applications
Resources
- RabbitMQ tutorials rabbitmq.com
- Smalltalk on RabbitMQ and Nanite paperplanes.de
- 22 Billion Served: Julien Genestoux of Superfeedr blog.gopivotal.com
- Lift AMQP with RabbitMQ and Scala – Tutorial and Screencast timperrett.com
- High powered messaging with RabbitMQ slideshare.net
- RabbitMQ in Action: Distributed Messaging for Everyone (book) amazon.com
Resque
- RUBY
- REDIS
A rock-solid job queue, written in Ruby, backed by Redis.
- Build at GitHub as an alternative to existing solutions. Powers GitHub background jobs ever since.
- Heavily relying on Redis as backend
- fork(2) is used for spawning workers
- Web UI for managing running jobs, active workers etc.
- Many plugins (like resque-scheduler, resque-retry)
- Big community
Resources
- Introducing Resque at GitHub.com blog github.com
- Queuing in Ruby with Redis and Resque at Heroku Center devcenter.heroku.com
- Do YOU KNOW Resque rubylearning.com
- How Queuing With Resque Works girders.org
RestMQ
- PYTHON
- REDIS
RestMQ is a message queue which uses HTTP as transport, JSON to format a minimalist protocol and is organized as REST resources. It stands on the shoulder of giants, built over Python, Twisted, Cyclone (a Tornado implementation over twisted) and Redis.
Resources
- RestMQ - HTTP/Redis based Message Queue (slides) slideshare.net
RQ
- PYTHON
- REDIS
RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers
Resources
Sidekiq
- RUBY
- REDIS
Simple, efficient background processing for Ruby.
- Based on Redis
- Multithreaded, employs Celluloid under the hood
- Web UI
- Resque Compatibility
- Sidekiq Pro - paid version ($750) with support and additional features (batches, notifications, reliability, metrics)
- Fast growing community
Resources
- Asynchronous Processing for Fun and Profit by Mike Perham confreaks.com
- #366 Sidekiq - RailsCasts railscasts.com
- Sidekiq vs Resque, With MRI and JRuby joshrendek.com
- Kicking ass with Sidekiq at StatusPage.io blog blog.statuspage.io
- Sidekiq at LinuxJournal linuxjournal.com
SQS - Amazon Simple Queue Service
- SERVICE
Amazon Simple Queue Service (SQS) is a fast, reliable, scalable, fully managed queue service.
Resources
- What are the advantages and disadvantages of Beanstalkd as a work queue? at Quora quora.com
- What is Amazon Simple Queue Service? docs.aws.amazon.com
- Zend Framework with SQS Adapter (PHP) framework.zend.com
- A super efficient AWS SQS thread based message processor for Ruby github.com
Zaqar (ex Marconi)
https://wiki.openstack.org/wiki/Zaqar
- OPENSTACK
- PYTHON
- MONGODB
- SQLITE
- DURABLE
Zaqar is a queuing and notification service made by and for OpenStack, but not only for it
Resources
- OpenStack Summit 2013 Project Overview: Marconi Queueing and Notification Service youtube.com
- Marconi Queuing and Notification service for OpenStack youtube.com
ZeroMQ
- CPP
The Intelligent Transport Layer
Resources
- ZeroMQ an introduction (Really - the best, must read article!) nichol.as
- ZeroMQ: Modern & Fast Networking Stack igvita.com
- PyCon 2011: Advanced Network Architectures With ZeroMQ (video) blip.tv
- Ømq & Services @ Chartboost by Kenneth Ballenegger (slides) speakerdeck.com
- Gearman and ZeroMQ, two different animals speakerdeck.com
- The Architecture of Open Source Applications (Volume 2): ZeroMQ aosabook.org
- Network Autoconfiguration with Go and ØMQ github.com
- Using ZeroMQ Security (part 1) hintjens.com
- Integrate ZeroMQ, AMQP, JMS WebSphere MQ and more in 2 lines of Python code with Zato architects.dzone.com
- ZeroMQ instead of HTTP, for internal services augustl.com
- gevent-zeromq - library wraps pyzmq to make it compatible with gevent (Python) github.com
- Introducing ZuQ – A Simple ZeroMQ Queuing Daemon devincharge.com
- Lightweight RPC with ØMQ and Protocol Buffers blogs.mulesoft.org
- ZeroMQ via C#: Introduction codeproject.com