3

Ruby30 分ごとにチャネルからメッセージを読み取るリスナーを作成したいと考えています。どの Gem を使用するか混乱しています: Bunny( https://github.com/ruby-amqp/bunny ) またはAMQP( http://rubyamqp.info )? Bunny が使いやすいことは承知しています。しかし、それで私の目的は解決しますか?

4

1 に答える 1

4

スクリプトはどのようにトリガーされますか? 問題のボリュームは?処理は順次行われますか、それとも何らかのイベントベースのシステムで行われますか? 両方のライブラリは基本的に同じです - 1 つのコアの違いを除いて。

Bunny は順次処理に使用されます。次のメッセージが取得される前に、メッセージがキューから取り出され、処理されて確認されます。これをスケーリングするには、スレッドまたはプロセスを使用して一度により多くのメッセージを処理する必要があります。

AMQP gem はイベントベースで、EventMachine リアクター内で実行されます。これは、RabbitMQ または別の外部サービスがボトルネックとなる軽いワークロードに最適です。AMQP gem を使用すると、コンシューマーはできるだけ多くのメッセージを消費 (または通知) し、メッセージごとに個別のコールバックを開始します。コールバックが独自のネットワーク呼び出しを行う場合、Ruby がネットワーク通信を最も効果的にインターリーブできるため、これがおそらく最良のソリューションです。

簡単にまとめますが、基本的にほとんど実行されないスクリプトの場合、特に EventMachine で作業したことがない場合は、Bunny のシーケンシャルな性質をお勧めします。ワークロードに関する知識がなければ、完全に回答することは困難です。

既製の Bunny フレームワークについては、jondot/sneakersをご覧ください。

于 2014-04-06T21:44:21.133 に答える