2011-07-19 3 views
0

あなたがキューイングサービスのRubyクライアントであるとします。 RabbitMQ。アクティブなポーリングやリソースを消費しないように、メッセージの実装はどのように実装されていますか?これは質問Ruby blocking on a valueから直接得られます - もしAMQPクライアントが効率的にそれを行うことができれば、Memcachedの読み込みと似たようなことをすることができます...そして一般的に、RabbitMQとそのような使い方については、Ruby AMQPクライアントはメッセージの待機を効率的にブロックしますか?

答えて

1

Rubyの世界では、これはほとんどasynchronous event driven I/Oを使って行われます。 AMPQ-client in GitHubを見ると、EventMachineとCool.IOの2つのライブラリがサポートされています。

ポーリングが有効ですが、待機中のループはオペレーティングシステムのカーネルの助けを借りて行われます。たとえば、EventMachineは、Linux上で実行している場合はepollのようなものを使用します。

目的のイベントが発生すると、コールバック関数が呼び出されます。 EventMachineがどのように機能しているかについて詳しくは、hereを参照してください。

AMPQクライアントはまだソケットを介してキューサーバーと通信していますが、APIは待機ループと通知をOSカーネルに遅延させます。

+0

偉大なポインタ、ありがとう! – Alexy

関連する問題