Job queues, message queues and other queues. Almost all of them in one place.
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.
Deadbeef.news: Fresh news about tech
- java
Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server.
http://aws.amazon.com/amazon-mq/
- service
Amazon MQ is a managed message broker service for Apache ActiveMQ that makes it easy to set up and operate message brokers in the cloud.
- What is Amazon MQ? docs.aws.amazon.com
- Introducing Amazon MQ aws.amazon.com
- aws.amazon.com
- service
Amazon Simple Queue Service (Amazon SQS) is a messaging queue service that handles message or work flows between other components in a system.
- Developer Guide: What is Amazon Simple Queue Service? docs.aws.amazon.com
- Developer Guide: Tutorials docs.aws.amazon.com
- API Reference docs.aws.amazon.com
- What are the advantages and disadvantages of Beanstalkd as a work queue? at Quora quora.com
- A super efficient AWS SQS thread based message processor for Ruby github.com
- Zend Framework with SQS Adapter (PHP) framework.zend.com
http://activemq.apache.org/apollo/
- java
- scala
- amqp
ActiveMQ's next generation of messaging.
- 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
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
- #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
https://github.com/vimukthi-git/beanstalkg/pulls
- go
Beanstalkg is a reimplementation of beanstalkd in Go.
- Queue Story 1 — Introduction to Beanstalkg vimukthi.com
- python
Distributed Task Queue
- Using Celery for queuing requests blog.serverdensity.com
- An Introduction to Celery by Gilang Chandrasa (slides) speakerdeck.com
- Celery - Best Practices denibertovic.com
- How Instagram Feeds Work: Celery and RabbitMQ blogs.vmware.com
https://github.com/wavii/darner
- cpp
simple, lightweight message queue
- Darner, Wavii’s new queue server: 10x faster, 10x smaller wavii.wordpress.com
- How do Darner and RabbitMQ compare? at Quora quora.com
https://github.com/collectiveidea/delayed_job
- ruby
- mysql
Database based asynchronously priority queue system
- #171 Delayed Job - RailsCasts railscasts.com
- Do It Later With Delayed Job. therailsway.com
- Delayed Jobs Callbacks and Hooks in Rails salsify.com
https://github.com/antirez/disque
- redis
- disque
An in-memory, distributed job queue.
- dotScale 2015: Salvatore Sanfilippo introducing Disque youtu.be
- Disque on Hacker News news.ycombinator.com
- Adventures in message queues antirez.com
https://github.com/contribsys/faktory
- go
- ruby
- rocksdb
Language-agnostic, persistent background job system.
- Introducing Faktory mikeperham.com
- c
Gearman Job Server
- 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
- 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
- java
- amqp
- jms
An open source project to build a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system (Donated to Apache ActiveMQ community).
- 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
- HornetQ Apache donation and Apache Artemis 1.0.0 release hornetq.blogspot.co.uk
https://huey.readthedocs.org/en/latest/
- python
- redis
- django
a little task queue
- Source on GitHub github.com
- Huey, a lightweight task queue for python charlesleifer.com
- 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.
- 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
- scala
Apache Kafka is publish-subscribe messaging rethought as a distributed commit log.
- 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
https://github.com/Automattic/kue
- node.js
- priority
- redis
A distributed priority job queue backed by redis, built for node.js
- Delayed jobs
- Optional retries with backoff
- Distribution of parallel work load
- Job TTL
- Job event and progress pubsub
- Rich integrated UI
- RESTful JSON API
- Graceful shutdown
- Powered by Redis
- Implementing a Job Queue with Node.js medium.com
- Introduction to Kue screenr.com
- API walkthrough to Kue vimeo.com
- java
- high-throughput
- low-latency
- message-passing
- ipc
A Java based high throughput, low latency message bus, using either a memory mapped file or shared memory as transport.
- Source on GitHub github.com
https://github.com/groupon/Message-Bus
- hornetq
- java
- ruby
Message bus is a distributed messaging platform built with HornetQ, used extensively at Groupon.
- Building a Distributed Messaging System engineering.groupon.com
- Reliable Distributed Messaging with HornetQ jboss.org
- c
- zeromq
nanomsg is a socket library that provides several common communication patterns
- Getting Started with 'nanomsg' tim.dysinger.net
- Nanomsg: ZeroMQ done right hguemar.fedorapeople.org
- go
- .NET
- node
- nginx
- java
- ruby
- python
- scala
NATS is an open-source, high-performance, lightweight cloud messaging system.
- NATS Documentation nats.io
- NATS: High Performance Cloud Native Messaging Written in Go blog.gopheracademy.com
- Using NATS instead of HTTP for inter service communication diogogmt.com
- Benchmarking Message Queue Latency bravenewgeek.com
- Dissecting Message Queues bravenewgeek.com
- Introducing NATS apcera.com
- CloudFoundry Messaging System docs.cloudfoundry.org
- Why CloudFoundry uses NATS quora.com
- NATS Node.js client on NPM npmjs.com
- Gnatsd Docker Image registry.hub.docker.com
https://github.com/bitly/nsq
- go
realtime distributed message processing at scale
- 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
- Realtime Distributed Message Processing at Scale with NSQ (video) youtube.com
- Go Advent Day 22 - A Journey Into NSQ blog.gopheracademy.com
- java
- persistent
- replay
- backup
QDB is a Persistent Message Queue With Replay support
- Source on Github github.com
- ANN QDB 0.4.4 Released with backup for RabbitMQ queues rabbitmq.1065348.n5.nabble.com
- java
- amqp
- cpp
Apache Qpid™ makes messaging tools that speak AMQP and support many languages and platforms (in C++, Python, Java JMS and .NET)
- 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
https://github.com/ryandotsmith/queue_classic
- ruby
- postgres
Simple, efficient worker queue for Ruby & PostgreSQL.
- queue_classic by Ryan Smith (slides) dl.dropboxusercontent.com
- #344 Queue Classic - RailsCasts railscasts.com
- erlang
- amqp
Robust messaging for applications
- RabbitMQ tutorials rabbitmq.com
- NYTimes Architecture: No Head, No Master, No Single Point Of Failure highscalability.com
- Continuous Integration: Scaling to 74,000 Builds Per Day With Travis CI & RabbitMQ blog.gopivotal.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
- How Instagram Feeds Work: Celery and RabbitMQ blogs.vmware.com
https://github.com/resque/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
- 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
- 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.
- RestMQ - HTTP/Redis based Message Queue (slides) slideshare.net
- python
- redis
RQ (Redis Queue) is a simple Python library for queueing jobs and processing them in the background with workers
- go
Simple, lightweight, leveldb backed message queue
- Darner rewritten in Go with additional features
- Single topic can be consumed multiple times using durable cursors
- Uses Kestrel (memcached) protocol
- Keeps all messages out of process
- Small amount of in-resident memory regardless of queue size
- Two-phase reliable fetch
- Source on GitHub github.com
- ruby
- crystal
- 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
- 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
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
- OpenStack Summit 2013 Project Overview: Marconi Queueing and Notification Service youtube.com
- Marconi Queuing and Notification service for OpenStack youtube.com
- cpp
- java
The Intelligent Transport Layer
- 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 blog.kyleisom.net
- 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
- JeroMQ: implemenation in java github.com
by @lukaszx0