За моите проекти ще се чувствам много комфортно с collectiveidea/delayed_job в rails2 и 3. Не знам beanstalkd, но скоро ще го пробвам :-).Следвал съм предложенията в документацията на resque. Ще докладвам.
Resque vs DelayedJob
Как Resque се сравнява с DelayedJob и защо бихте избрали едно пред друго?
- Resque поддържа множество опашки
- DelayedJob поддържа по-фини приоритети
- Служителите на Resque са устойчиви на течове/надуване на паметта
- Служителите на DelayedJob са изключително прости и лесни за промяна
- Resque изисква Redis
- DelayedJob изисква ActiveRecord
- Resque може да поставя само JSONable Ruby обекти на опашка като аргументи
- DelayedJob може да постави всеки обект Ruby в своята опашка като аргументи
- Resque включва приложение Sinatra за наблюдение на случващото се
- DelayedJob може да бъде заявен от вашето приложение Rails, ако искате да добавите интерфейс
Ако се занимавате с разработка на Rails, вече имате база данни и ActiveRecord. DelayedJob е супер лесен за настройка и работи страхотно. GitHub го използваше в продължение на много месеци, за да обработи почти 200 милиона работни места.
Изберете Resque, ако:
- Имате нужда от няколко опашки
- Не ви интересува/не харесвате числовите приоритети
- Не е нужно да запазвате всеки Ruby обект
- Имате потенциално огромни опашки
- Искате да видите какво се случва
- Очаквате много неуспехи/хаос
- Можете да настроите Redis
- Не ви липсва RAM
Изберете DelayedJob, ако:
- Харесвате числови приоритети
- Не вършите огромно количество работа всеки ден
- Опашката ви остава малка и пъргава
- Няма много провали/хаос
- Искате лесно да хвърляте всичко на опашката
- Не искате да настройвате Redis
Изберете Beanstalkd, ако:
- Харесвате числови приоритети
- Искате изключително бърза опашка
- Не искате да губите RAM паметта си
- Искате да обслужвате голям брой работни места
- Добре сте с JSONable Ruby обекти на опашка като аргументи
- Имате нужда от няколко опашки
Resque по никакъв начин не е „по-добър“ DelayedJob, така че не забравяйте да изберете инструмента, който е най-подходящ за вашето приложение.
Приятно сравнение на скоростта на опашката:
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
Приятен ден!
P.S. Има RailsCast за resque, Delayed Job (ревизирана версия) и Beanstakld. Разгледайте!
P.P.S. Любимият ми избор вече е Sidekiq (много прост, бърз и ефективен за прости задачи), разгледайте тази страница за сравнение.