39

人々が Rails アプリに使用しているメッセージ キューと、それを選択する決定の背後にある原動力は何でしたか。社内キューのStarlingの落下に関する最新のTwitterの宣伝は、既存の設計上の決定に影響を与えますか.

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

Rails アプリにおすすめのメッセージ キューは何ですか?

編集:提案をありがとう、私は今週末それらのいくつかを見るつもりです.

再び編集:私は周りを見回して、選択に少し圧倒されました. ただし、RabbitMQ と Workling を構築中のアプリに統合するつもりです。その後、ファスト キューに関する知識が必要になった場合は、これを入手して、それが自分のニーズに合っているかどうかを判断します。

編集: 自分に合った DJ をどんどん見つけていきます。あるサイトでそれを「成長」させることがあるとしたら、Resque は私が向かう場所だと思います。

EDIT:(2014年12月)私がこれを尋ねてから長い時間が経ちましたが、まだいくつかの意見や投票を得ているので、バックグラウンドワーカーの選択に関しては、今のアプローチで更新すると思いました.

私の意見では、現在、Ruby でバックグラウンド ジョブを実行する最良の方法は、Sidekiq を使用することです。Sidekiqの前に私が使用していたResqueのようなものよりもはるかに少ないメモリを使用できるワーカーごとのプロセスではなく、スレッド化されたワーカーであるSidekiqを多くの人が本当に称賛しています。これは良いことですが、私にとってこれはキラー機能ではありませんでした。Sidetiq を Sidekiq と共に使用することで、ジョブのスケジューリングが非常に簡単になり、切り替えて振り返ることはありませんでした。これまで使用した中で最も簡単なジョブのスケジューリングで、Sidekiq を簡単に使用できます。

4

7 に答える 7

16

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

https://github.com/resque/resque

于 2009-11-29T15:56:07.237 に答える
9

github の Chris Wanstrath は最近 SF Ruby ミートアップに参加し、彼らの待ち行列について話しました。彼らは、Shopify のdelayed_job に落ち着く前に、Starling、beanstalk、およびその他のいくつかの亜種を試しました。彼らは、バックグラウンド処理をかなり積極的に使用しています。

これは昨年のブログ記事で、DJ への移行について語っています。

私が今いる場所では、数年前に独自に開発しましたが、ハンドリングを改善するために DJ からいくつかのアイデアを取り入れています。

于 2009-04-06T17:39:13.000 に答える
9

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

とにかく、非常に成熟した高速なソリューションが必要な場合、ActiveMQは非常に良い選択です。本当に必要のない本格的なメッセージ キューイング ソリューションの保守にあまり時間をかけたくない場合は、delayed_job が最適です。これは、ActiveMQ を使用した Scribd エクスペリエンスに関する優れた記事です。

于 2009-04-16T13:23:14.107 に答える
4

以下にいくつかの Ruby/Rails ソリューションを示します。ニーズによっては、これらの 1 つまたは複数が適している場合があります。

http://xph.us/software/beanstalkd

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

http://backgroundrb.rubyforge.org

そして、Ruby/Rails と大規模システムの他のコンポーネントとの間で共有するための優れたキューを作成する Amazon のホストされたソリューション:

http://aws.amazon.com/sqs

お役に立てれば!

于 2009-04-06T15:22:07.587 に答える
3

希望する Messaging Server は RabbitMQ です。Erlang のクールさ、AMQP、優れた Ruby ライブラリ。

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

于 2009-04-16T13:31:09.063 に答える
2

Rany Keddo は、昨年の RailsConf Europe で Starling + Workling に関する有用なプレゼンテーションを行いました。彼は、当時利用可能なさまざまなソリューションを比較しました。

Starling + Workling から離れた Twitter の最近の動きは、おそらく通常の Rails アプリにとってはあまり意味がありません。スケールの問題がはるかに多く、おそらくデータストアにレガシーの問題があり、現在の実装を超えてスケ​​ールすることができません。

Beanstalkdは、デーモンとして実行され、他のスクリプト言語のラッパーを備えているという理由だけで、優れた代替手段です (将来方向を変更したり、別のコンポーネントを他の言語で記述したりする場合)。

このリンクには、利用可能なさまざまな Rails ソリューションの長所と短所の比較も含まれています。

于 2009-04-06T18:49:36.873 に答える
1

私は、 delayed_jobのようにデータベースベースのキューであるbackground_jobを使用します。

出入りするトラフィックが多すぎない限り、データベースはOKキューを作成します。

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

于 2009-04-06T22:52:03.623 に答える