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必須らしい。
ちょっとメッセージを送りたいとかいう場合には不便じゃないかなあ。
ここにいろいろなユースケースと、コードの例が載っているので、これをもとに考えないとダメかな。。。
Ruby amqp gem: Patterns and Use Cases