Voici mes besoins:
Resque et beanstalkd ne font pas la queue_in.
Il y a 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 lancé gratuitement le beanstalkd pour ceux qui ont des cas amazoniens, c’est un avantage pour nous, mais je ne suis toujours pas sûr de la meilleure option.
Nous courons les rails 2.3 mais nous l’amènerons rapidement aux rails 3.0.3.
Mais quel est mon meilleur choix ici? Est-ce que je manque un autre joyau qui fait ce travail mieux?
Je pense que ma seule option qui fonctionne actuellement est le resque_scheduler.
Modifier:
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 in rails2 et 3. Je ne connais pas beanstalkd, mais je vais 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 sur l’autre?
Si vous développez Rails, vous avez déjà une firebase database et ActiveRecord. DelayedJob est très facile à configurer et fonctionne très bien. GitHub l’a utilisé pendant plusieurs mois pour traiter près de 200 millions d’emplois.
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 le mieux adapté à votre application.
Une belle comparaison de la vitesse de backend des files 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!
PS Il y a un RailsCast sur resque , Delayed Job ( version révisée ) et Beanstakld . Regarde!
PPS Mon choix préféré est maintenant Sidekiq (très simple, rapide et efficace pour les travaux simples), regardez cette page pour la comparaison.
Amazon Beanstalk n’est pas Beanstalkd.
Beanstalkd – la queue – a des tâches différées, qui ne seront pas réservées en dehors de la queue tant que le nombre de secondes spécifié n’est pas écoulé. Si c’est ce que signifie Enqueue_in(10.hours, ... )
, alors ce n’est que 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'