Para meus projetos eu me sentirei muito confortável com o uso coletivo/delayed_job nos rails2 e 3.Não conheço o beanstalkd, mas vou tentar em breve :-).Segui as sugestões da documentação resque.Vou relatar.
Resque vs DelayedJob
Como o Resque se compara ao DelayedJob e por que você escolheria um em vez do outro?
- Resque suporta várias filas
- DelayedJob suporta prioridades mais refinadas
- Os trabalhadores da Resque são resistentes a vazamentos de memória/inchaço
- Os trabalhadores do DelayedJob são extremamente simples e fáceis de modificar
- Resque requer Redis
- DelayedJob requer ActiveRecord
- Resque só pode colocar objetos Ruby JSONable em uma fila como argumentos
- DelayedJob pode colocar qualquer objeto Ruby em sua fila como argumentos
- Resque inclui um aplicativo Sinatra para monitorar o que está acontecendo
- DelayedJob pode ser consultado de dentro do seu aplicativo Rails se você quiser adicionar uma interface
Se você está desenvolvendo Rails, você já tem um banco de dados e ActiveRecord. DelayedJob é super fácil de configurar e funciona muito bem. O GitHub o usou por muitos meses para processar quase 200 milhões de trabalhos.
Escolha Resque se:
- Você precisa de várias filas
- Você não se importa / não gosta de prioridades numéricas
- Você não precisa persistir em todos os objetos Ruby
- Você tem filas potencialmente enormes
- Você quer ver o que está acontecendo
- Você espera muito fracasso/caos
- Você pode configurar o Redis
- Você não está com falta de RAM
Escolha Trabalho Atrasado se:
- Você gosta de prioridades numéricas
- Você não está fazendo uma quantidade gigantesca de trabalhos todos os dias
- Sua fila permanece pequena e ágil
- Não há muitas falhas / caos
- Você quer jogar facilmente qualquer coisa na fila
- Você não deseja configurar o Redis
Escolha Beanstalkd se:
- Você gosta de prioridades numéricas
- Você quer uma fila extremamente rápida
- Você não quer desperdiçar sua RAM
- Você deseja atender a um grande número de empregos
- Você está bem com objetos Ruby JSONable em uma fila como argumentos
- Você precisa de várias filas
De forma alguma Resque é um "melhor" DelayedJob, portanto, certifique-se de escolher a ferramenta que é melhor para seu aplicativo.
Uma boa comparação da velocidade de back-end de enfileiramento:
enqueue work
-------------------------------------------------
delayed job | 200 jobs/sec 120 jobs/sec
resque | 3800 jobs/sec 300 jobs/sec
rabbitmq | 2500 jobs/sec 1300 jobs/sec
beanstalk | 9000 jobs/sec 5200 jobs/sec
Tenha um bom dia!
P.S. Existe um RailsCast sobre resque, Delayed Job (versão revisada) e Beanstakld. Dar uma olhada!
P.P.S. Minha escolha favorita agora é o Sidekiq (muito simples, rápido e eficiente para trabalhos simples), dê uma olhada nesta página para comparação.