Ответ 1
Для моих проектов я буду чувствовать себя очень комфортно с помощью 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
- У вас недостаточно оперативной памяти.
Выберите 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, Отложенное задание (измененная версия) и Beanstakld. Посмотрите!
P.P.S. Мой любимый выбор теперь Sidekiq (очень простой, быстрый и эффективный для простых заданий), посмотрите эту страницу для сравнения.