For mine projekter vil jeg føle mig meget tryg ved collectiveidea/delayed_job i rails2 og 3.Jeg ved det ikke, men jeg vil prøve det snart :-).Jeg har fulgt forslagene i resque-dokumentationen.Jeg vil rapportere det.
Resque vs DelayedJob
Hvordan er Resque sammenlignet med DelayedJob, og hvorfor ville du vælge det ene frem for det andet?
- Resque understøtter flere køer
- DelayedJob understøtter finere prioriteter
- Resque-medarbejdere er modstandsdygtige over for hukommelseslækager/oppustethed
- DelayedJob-medarbejdere er ekstremt enkle og nemme at ændre
- Resque kræver Redis
- DelayedJob kræver ActiveRecord
- Resque kan kun placere JSONable Ruby-objekter i en kø som argumenter
- DelayedJob kan placere ethvert Ruby-objekt i dets kø som argumenter
- Resque inkluderer en Sinatra-app til at overvåge, hvad der foregår
- DelayedJob kan forespørges fra din Rails-app, hvis du vil tilføje en grænseflade
Hvis du laver Rails-udvikling, har du allerede en database og ActiveRecord. DelayedJob er super nem at konfigurere og fungerer fantastisk. GitHub brugte det i mange måneder til at behandle næsten 200 millioner job.
Vælg Spørg hvis:
- Du har brug for flere køer
- Du er ligeglad / kan ikke lide numeriske prioriteter
- Du behøver ikke at fortsætte med alle Ruby-objekter nogensinde
- Du har potentielt store køer
- Du vil gerne se, hvad der foregår
- Du forventer en masse fiasko/kaos
- Du kan konfigurere Redis
- Du mangler ikke RAM
Vælg Forsinket job, hvis:
- Du kan lide numeriske prioriteter
- Du laver ikke en gigantisk mængde opgaver hver dag
- Din kø forbliver lille og smidig
- Der er ikke meget fiasko/kaos
- Du vil nemt smide hvad som helst i køen
- Du ønsker ikke at konfigurere Redis
Vælg Beanstalkd hvis:
- Du kan lide numeriske prioriteter
- Du vil have ekstremt hurtig kø
- Du ønsker ikke at spilde din RAM
- Du ønsker at tjene et stort antal job
- Du har det fint med JSONable Ruby-objekter i en kø som argumenter
- Du har brug for flere køer
Resque er på ingen måde et "bedre" DelayedJob, så sørg for at vælge det værktøj, der er bedst til din app.
En god sammenligning af kø-backend-hastighed:
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
Hav en god dag!
P.S. Der er en RailsCast om resque, Delayed Job (revideret version) og Beanstakld. Tag et kig!
P.P.S. Mit yndlingsvalg er nu Sidekiq (meget enkelt, hurtigt og effektivt til simple jobs), kig på denne side for sammenligning.