EventMachine

RubyのAMQPを調べているところで出てきたEventMachineを調査。

EventMachineとは、Reactorパターン*1の高性能な(?)実装。
Reactorパターンというのは超要約すると、複数同時並行リクエストを受けつけて、関連するハンドラに投げつけるようなパターン。
JavaのNetty、Pythonのtwisted、Node.jsとも比較されている。

マルチプロセスとかマルチスレッドにするのに比べた利点が、結局何なのかだが、C10K問題対応と、プログラムの書きやすさってことなのだろうか。

見えないチカラ: 【翻訳】EventMachine入門
http://everburning.com/news/eventmachine-introductions/
EventMachineとは何だったのか by Hiroshi Nakamura on Prezi
http://blog.showqase.com/2010/05/15/eventmachine%E3%82%92%E8%A7%A6%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/
EventMachine: 高速でスケーラブルなEvent-Driven I/Oフレームワーク
DSAS開発者の部屋:並列1000コネクションに耐える! Ruby のイベント駆動ライブラリ Rev と EventMachine の HTTPクライアント


AMQPを扱うところでほぼ必ず出てくるのだけれど、今回並列処理はスレッドで書いちゃったので、EventMachineは必要ないなあ。。


(追記)
作りたいもの自体の要件としてはEventMachine不要なのだが、AMQPはEventMachine必須らしい。
ちょっとメッセージを送りたいとかいう場合には不便じゃないかなあ。

Google グループ

ここにいろいろなユースケースと、コードの例が載っているので、これをもとに考えないとダメかな。。。
Ruby amqp gem: Patterns and Use Cases