Voici mes besoins:
Resque et beanstalkd ne font pas l'enqueue_in.
Il existe un plugin (resque_scheduler) qui le fait, mais je ne suis pas sûr de sa stabilité.
Notre environnement est sur Amazon, et ils ont déployé le beanstalkd gratuitement pour ceux qui ont des instances Amazon, c'est un plus pour nous, mais je ne sais toujours pas quelle est la meilleure option ici.
Nous lançons Rails 2.3 mais nous l’accélérons à Rails 3.0.3 bientôt).
Mais quel est mon meilleur choix ici? Me manque-t-il un autre joyau qui fait mieux ce travail?
Je pense que ma seule option qui fonctionne actuellement est le resque_scheduler.
Éditer:
Sidekiq ( https://github.com/mperham/sidekiq ) est une autre option que vous devriez vérifier.
Pour mes projets, je me sentirai très à l'aise avec collectiveidea/delay_job dans Rails2 et 3. Je ne connais pas beanstalkd, mais je vais l'essayer bientôt :-). J'ai suivi les suggestions dans la documentation de resque. Je vais le signaler.
Resque vs DelayedJob
Comment Resque se compare-t-il à DelayedJob et pourquoi choisiriez-vous l'un plutôt que l'autre?
Si vous faites le développement Rails, vous avez déjà une base de données et ActiveRecord. DelayedJob est super facile à configurer et fonctionne très bien. GitHub l'a utilisé pendant plusieurs mois pour traiter près de 200 millions de travaux.
Choisissez Resque si:
Choisissez DelayedJob si:
Choisissez Beanstalkd si:
Resque n'est en aucun cas un "meilleur" DelayedJob, alors assurez-vous de choisir l'outil qui convient le mieux à votre application.
Une comparaison sympa de la vitesse du backend de mise en file d'attente :
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
Bonne journée!
P.S. Il y a un RailsCast à propos de resque , Travail retardé ( version révisée ) et Beanstakld . Regarde!
P.P.S. Mon choix préféré est maintenant Sidekiq (très simple, rapide et efficace pour les travaux simples), jetez un œil à cette page pour comparaison .
Amazon Beanstalk n'est pas Beanstalkd.
Beanstalkd - la file d'attente - a des travaux retardés, qui ne seront pas réservés hors de la file d'attente jusqu'à ce que le nombre de secondes donné se soit écoulé. Si c'est ce que Enqueue_in(10.hours, ... )
signifie, alors c'est juste du sucre syntaxique pour calculer le nombre de secondes, et ne pas rendre un travail disponible jusque-là.
Juste une petite note: delay_job 3.0 + prend en charge les files d'attente nommées
object.delay(:queue => 'tracking').method
Delayed::Job.enqueue job, :queue => 'tracking'
handle_asynchronously :Tweet_later, :queue => 'tweets'