質問

これが私のニーズです:

  • enqueue_in(10.hours、...)(dj構文は完璧です。)
  • 同時に労働者を乗算します。 (ResqueまたはBeanStalkdはこれに適していますが、DJではありません)
  • 1秒間に100ジョブのプッシュとポップを処理する必要があります。 (確かにテストを実行する必要がありますが、DJはこれほど多くの仕事を処理できないと思います)

ResqueとBeanStalkdはEnqueue_inを実行しません。

それを行うプラグイン(Resque_Scheduler)がありますが、それがどれほど安定しているかはわかりません。

私たちの環境はAmazonにあり、彼らはAmazonインスタンスを持っている人のためにBeanStalkdを無料で展開しました。それは私たちにとってプラスですが、ここで最良の選択肢が何であるかはまだわかりません。

Rails 2.3を実行しますが、すぐにRails 3.0.3にスピードを上げます。

しかし、ここでの私の最良の選択は何ですか?この仕事が良くなる別の宝石が足りないのですか?

実際に機能している私の唯一の選択肢は、Resque_Schedulerです。

編集:

sidekiq(https://github.com/mperham/sidekiq)チェックアウトする必要がある別のオプションです。

役に立ちましたか?

解決

私のプロジェクトでは、私はとても快適なベールを感じるでしょう collectiveidea/delayed_job Rails2と3では、BeanStalkdを知りませんが、すぐに試してみます:-)。 Resqueドキュメントで提案に従いました。報告します。

Resque vs DelayedJob

ResqueはDelayedJobとどのように比較されますか?また、なぜ1つを選択するのですか?

  • Resqueは複数のキューをサポートしています
  • DelayedJobは、より細かい粒度の優先順位をサポートします
  • レシクワーカーは、メモリリーク /膨満感に復元されます
  • 遅延ジョブワーカーは非常にシンプルで、変更が簡単です
  • ResqueにはRedisが必要です
  • delayedjobにはactiverecordが必要です
  • ResqueはJSonable Rubyオブジェクトを引用としてキューに配置することしかできません
  • delayedjobは、任意のルビーオブジェクトを引数に引数に配置できます
  • Resqueには、何が起こっているかを監視するためのSinatraアプリが含まれています
  • インターフェイスを追加する場合は、Railsアプリ内からDelayedJobをクエリすることができます

Rails開発を行っている場合、すでにデータベースとActiverCordがあります。 DelayedJobはセットアップが非常に簡単で、うまく機能します。 Githubはそれを何ヶ月も使用して、約2億人の雇用を処理しました。

リクを選択する場合は次のとおりです。

  • 複数のキューが必要です
  • 数値の優先順位を気にしない /嫌いではありません
  • すべてのルビーオブジェクトを持続する必要はありません
  • 潜在的に巨大なキューがあります
  • あなたは何が起こっているのか見たいです
  • あなたは多くの失敗 /カオスを期待しています
  • Redisをセットアップできます
  • あなたはラムで不足していません

delayedjobを選択してください。

  • あなたは数値優先順位が好きです
  • あなたは毎日巨大な量の仕事をしていません
  • あなたのキューは小さく、機敏なままです
  • あまり失敗 /カオスはありません
  • キューに何かを簡単に投げたいです
  • Redisをセットアップしたくありません

BeanStalkdを選択してください。

  • あなたは数値優先順位が好きです
  • 非常に速いキューが必要です
  • あなたはあなたのラムを無駄にしたくありません
  • あなたは多くの仕事に奉仕したいです
  • あなたは引数としてキューにJSonable Rubyオブジェクトで大丈夫です
  • 複数のキューが必要です

「より良い」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

良い1日を!

PS Railscastについて リク, 仕事の遅れ (改訂版) と Beanstakld. 。見てください!

PPS私のお気に入りのチッシュは今です Sidekiq (非常にシンプルで、速く、単純な仕事のために効率的です)、 このページ 比較のために。

他のヒント

Amazon BeanStalkはBeanStalkdではありません。

BeanStalkd-キュー - ジョブが遅れており、指定された秒数が経過するまでキューから留保されません。それが何なのか Enqueue_in(10.hours, ... ) つまり、秒数を計算するのは単なる構文砂糖であり、それまでは仕事を利用できないことを意味します。

ちょっとしたメモ: delayed_job 3.0+ 名前付きキューをサポートします

object.delay(:queue => 'tracking').method    
Delayed::Job.enqueue job, :queue => 'tracking'    
handle_asynchronously :tweet_later, :queue => 'tweets'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top