私のプロジェクトでは、rails2と3のcollectiveidea / delayd_jobで非常に快適に感じるでしょう。beanstalkdはわかりませんが、すぐに試してみます:-)。resqueドキュメントの提案に従いました。報告します。
Resque vs DelayedJob
ResqueはDelayedJobとどのように比較されますか?また、なぜどちらかを選択するのですか?
- Resqueは複数のキューをサポートします
- DelayedJobは、よりきめ細かい優先順位をサポートします
- Resqueワーカーは、メモリリーク/膨張に対して回復力があります
- DelayedJobワーカーは非常にシンプルで、簡単に変更できます
- ResqueにはRedisが必要です
- DelayedJobにはActiveRecordが必要です
- Resqueは、JSON可能なRubyオブジェクトのみを引数としてキューに配置できます
- DelayedJobは、任意のRubyオブジェクトを引数としてキューに配置できます
- Resqueには、何が起こっているかを監視するためのSinatraアプリが含まれています
- インターフェースを追加したい場合は、Railsアプリ内からDelayedJobを照会できます
Rails開発を行っている場合は、すでにデータベースとActiveRecordがあります。 DelayedJobはセットアップが非常に簡単で、うまく機能します。 GitHubはこれを何ヶ月も使用して、約2億件のジョブを処理しました。
次の場合にResqueを選択します:
- 複数のキューが必要です
- 数値の優先順位は気にしない/嫌いです
- すべてのRubyオブジェクトを永続化する必要はありません
- 潜在的に巨大なキューがあります
- 何が起こっているのかを知りたい
- あなたは多くの失敗/混乱を期待しています
- Redisをセットアップできます
- RAMが不足していません
次の場合にDelayedJobを選択します:
- 数値の優先順位が好きです
- あなたは毎日膨大な量の仕事をしていません
- キューは小さくて機敏です
- 多くの失敗/混乱はありません
- キューに何かを簡単に投げたい
- Redisをセットアップしたくない
次の場合にBeanstalkdを選択します:
- 数値の優先順位が好きです
- 非常に高速なキューが必要です
- RAMを無駄にしたくない
- 多数の仕事に従事したい
- 引数としてキューにあるJSON可能な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. resque、Delayed Job(改訂版)、Beanstakldに関するRailsCastがあります。ご覧ください!
P.P.S.私のお気に入りのchoicheはSidekiq(非常にシンプル、高速、シンプルな仕事に効率的)です。比較のためにこのページをご覧ください。