web-dev-qa-db-ja.com

Ruby on Rails

Railsアプリに使用しているメッセージキューと、それを選択する決定の原動力となったものは何ですか。社内のキューStarlingに関する最新のTwitterの宣伝は、既存の設計上の決定に影響しますか? 。

私はいくつかのバックグラウンドタスクを処理するためにメッセージキューを必要とするアプリに取り組んでいます。私はこれの多くを実行していません。これまでに見たことのほとんどはStarlingとWorklingに関するもので、正直に言うとアプリケーションはそれほど大きくなく、おそらくこのソリューションで十分ですが、ある時点で1つをより大きなアプリに統合すると確信しているので、可能な限り最高のソリューションを統合する経験を積みたいと思います。

Rails app ???

編集:提案をありがとう、私は今週末にそれらのいくつかを見ていきます。

再度編集:私は周りを見回して、選択に少し圧倒されました。ただし、作成中のアプリにRabbitMQとWorklingを統合するつもりです。高速キューに関する知識が必要な場合は、これがあり、自分のニーズに合っているかどうかがわかります。

編集:DJが私にぴったり合うことをどんどん見つけて、私がサイトでそれを「引き伸ばす」なら、私はResqueが私が向かうところだと言うでしょう。

編集:(2014年12月)だから私はこれを尋ねて久しぶりですが、それでもいくつかの見解や投票が得られるので、バックグラウンドワーカーの選択に関しては私のアプローチで更新すると思いました。

私の意見では、現在Ruby=でバックグラウンドジョブを実行する最良の方法はSidekiqを使用することです。多くの人がSidekiqを称賛しています。 Sidekiqの前に使用していたResqueのようなものです。これは良いことですが、これはキラー機能ではありませんでした。SidekiqとSidekiqを併用することで、ジョブのスケジュール設定が非常に簡単になり、切り替えて、振り返ることはありませんでした。 、私が使用したジョブのスケジューリングがはるかに簡単で、Sidekiqを簡単に使用できるようになりました。

39
nitecoder

更新として-GitHubが遅延ジョブではなくResis上のResqueに移動しました。ただし、小規模なセットアップの場合は引き続きdelay_jobをお勧めします。

https://github.com/resque/resque

16
Julian H

GithubのChris WanstrathがSF Ruby Meetupで最近キューについて話していました。彼らはShoplingのdelay_jobに落ち着く前に、Starling、beanstalk、その他のいくつかのバリアントを試しました。彼らはかなり積極的に使用しています。背景。

こちらが 昨年のブログ投稿 で、DJへの移行について語っています。

私は今、数年前に自分自身で仕事をしましたが、取り扱いを改善するためにDJからいくつかのアイデアを取り入れています。

9
Sarah Mei

重い負荷が予想されない場合は、 delayed-job をシンプルな解決策としてお勧めします。長所:設定が簡単で、監視が簡単で、単純なコードで、外部依存関係がありません。以前はActiveMessaging(ActiveMQとstompを使用)を使用していましたが、これは私たちのプロジェクトにとってはやり過ぎだったので、単純にするためにdelay_jobに切り替えました。

とにかく、非常に成熟した高速なソリューションが必要な場合は、 ActiveMQ が最適です。本当に必要ない本格的なメッセージキューイングソリューションの維持にあまり時間をかけたくない場合は、delayed_jobが適しています。これが、ActiveMQでのScribdの経験についての 良い記事 です。

9
Oleg Shaldybin

Ruby/Railsソリューションのいくつかを以下に示します。これらの1つ以上は、ニーズに応じて適切な場合があります。

http://xph.us/software/beanstalkd

http://rubyforge.org/forum/forum.php?forum_id=19781

http://backgroundrb.rubyforge.org

そして、Amazonが提供するホスト型ソリューションは、Ruby/Railsと他の大規模システムのコンポーネントとの間で共有するための素晴らしいキューになります。

http://aws.Amazon.com/sqs

お役に立てれば!

4
Adam Alexander

あなたが行きたいかもしれないメッセージングサーバーはRabbitMQです。 Erlangのクールさ、AMQP、良いRuby libs。

http://www.bestechvideos.com/2008/12/09/rabbitmq-an-open-source-messaging-broker-that-just-works

3
Sebastian

Rany Keddoは昨年、RailsConf EuropeでStarling + Worklingについて 便利なプレゼンテーション を発表しました。当時利用可能なさまざまなソリューションを比較しました。

Starling + WorklingからのTwitterの最近の動きは、おそらく通常のRailsアプリには意味がありません。スケーリングの問題がはるかに多く、おそらくデータストアにレガシーの問題があり、スケーリングを妨げています。現在の実装の過去。

Beanstalkd は、デーモンとして実行され、他のスクリプト言語でラッパーを使用している(単に方向を変更したり、別のコンポーネントを他の言語で記述したりする場合)ため、優れた代替手段です。

この link には、さまざまなRailsソリューションの賛否両論の優れた比較もあります。

2
Pras

私は background_job を使用します delayed_job と同様に、データベースベースのキューです。

データベースは、大量のトラフィックの送受信を行わない限り、OKキューを作成します。

Background_job(およびdelay_job)が好きな理由は、個別のプロセスを必要としないためです。それらはcronを介して実行できます。私にとって、これは非常に重要です。私のメッセージングのニーズは、私のわずかなシステム管理者のスキルよりもさらに単純だからです。

1
Luke Francl