Para mis proyectos, me sentiré muy cómodo con la idea colectiva/trabajo retrasado en los rieles 2 y 3. No conozco beanstalkd, pero lo intentaré pronto :-). He seguido las sugerencias en la documentación correspondiente. Lo informaré. /P>
Resque vs DelayedJob
¿Cómo se compara Resque con DelayedJob y por qué elegiría uno sobre el otro?
- Resque admite varias colas
- DelayedJob admite prioridades más detalladas
- Los trabajadores de Resque son resistentes a las fugas/inflación de memoria
- Los trabajadores de DelayedJob son extremadamente simples y fáciles de modificar
- Resque requiere Redis
- DelayedJob requiere ActiveRecord
- Resque solo puede colocar objetos Ruby aptos para JSON en una cola como argumentos
- DelayedJob puede colocar cualquier objeto Ruby en su cola como argumentos
- Resque incluye una aplicación de Sinatra para monitorear lo que sucede
- Se puede consultar DelayedJob desde su aplicación Rails si desea agregar una interfaz
Si está desarrollando Rails, ya tiene una base de datos y ActiveRecord. DelayedJob es muy fácil de configurar y funciona muy bien. GitHub lo usó durante muchos meses para procesar casi 200 millones de trabajos.
Elija Resque si:
- Necesita varias colas
- No te importa/no te gustan las prioridades numéricas
- No es necesario conservar todos los objetos de Ruby nunca
- Tiene colas potencialmente enormes
- Quieres ver lo que está pasando
- Esperas mucho fracaso/caos
- Puede configurar Redis
- No te estás quedando sin RAM
Elija Trabajo retrasado si:
- Te gustan las prioridades numéricas
- No estás haciendo una gran cantidad de trabajos cada día
- Su cola se mantiene pequeña y ágil
- No hay mucho fracaso/caos
- Quieres tirar fácilmente cualquier cosa en la cola
- No desea configurar Redis
Elija Beanstalkd si:
- Te gustan las prioridades numéricas
- Quieres una cola extremadamente rápida
- No querrás desperdiciar tu RAM
- Desea atender una gran cantidad de trabajos
- Está bien con objetos JSONable Ruby en una cola como argumentos
- Necesita varias colas
De ninguna manera Resque es un DelayedJob "mejor", así que asegúrese de elegir la mejor herramienta para su aplicación.
Una buena comparación de la velocidad de backend en cola:
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
¡Que tengas un buen día!
PD Hay un RailsCast sobre resque, Delayed Job (versión revisada) y Beanstakld. ¡Echa un vistazo!
P.P.D. Mi elección favorita ahora es Sidekiq (muy simple, rápido y eficiente para trabajos simples), eche un vistazo a esta página para comparar.