För mina projekt kommer jag att känna mig väldigt bekväm med collectiveidea/delayed_job i rails2 och 3.Jag vet inte beanstalkd, men jag kommer att prova det snart :-).Jag har följt förslagen i resquedokumentationen.Jag kommer att rapportera det.
Resque vs DelayedJob
Hur står sig Resque i jämförelse med DelayedJob, och varför skulle du välja det ena framför det andra?
- Resque stöder flera köer
- DelayedJob stöder finare prioriteringar
- Resque-arbetare är motståndskraftiga mot minnesläckor/uppsvälldhet
- DelayedJob-arbetare är extremt enkla och lätta att ändra
- Resque kräver Redis
- DelayedJob kräver ActiveRecord
- Resque kan bara placera JSONable Ruby-objekt i en kö som argument
- DelayedJob kan placera vilket Ruby-objekt som helst i sin kö som argument
- Resque inkluderar en Sinatra-app för att övervaka vad som händer
- DelayedJob kan frågas från din Rails-app om du vill lägga till ett gränssnitt
Om du håller på med Rails-utveckling har du redan en databas och ActiveRecord. DelayedJob är superlätt att ställa in och fungerar utmärkt. GitHub använde den i många månader för att bearbeta nästan 200 miljoner jobb.
Välj Resque om:
- Du behöver flera köer
- Du bryr dig inte / ogillar numeriska prioriteringar
- Du behöver inte bevara alla Ruby-objekt någonsin
- Du har potentiellt stora köer
- Du vill se vad som händer
- Du förväntar dig mycket misslyckande/kaos
- Du kan ställa in Redis
- Du har inte ont om RAM
Välj Försenat jobb om:
- Du gillar numeriska prioriteringar
- Du gör inte en gigantisk mängd jobb varje dag
- Din kö förblir liten och smidig
- Det finns inte mycket misslyckande/kaos
- Du vill enkelt kasta vad som helst i kön
- Du vill inte ställa in Redis
Välj Beanstalkd om:
- Du gillar numeriska prioriteringar
- Du vill ha extremt snabb kö
- Du vill inte slösa bort ditt RAM
- Du vill tjäna ett stort antal jobb
- Du klarar dig bra med JSONable Ruby-objekt i en kö som argument
- Du behöver flera köer
Resque är inte på något sätt ett "bättre" DelayedJob, så se till att du väljer det verktyg som är bäst för din app.
En trevlig jämförelse av backend-hastighet i kö:
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
Ha en bra dag!
P.S. Det finns en RailsCast om resque, Delayed Job (reviderad version) och Beanstakld. Ta en titt!
P.P.S. Mitt favoritval är nu Sidekiq (mycket enkelt, snabbt och effektivt för enkla jobb), ta en titt på den här sidan för jämförelse.