RabbitMQ あれこれ

Message Queue を使う必要が出てきました。以前、Twitter 社の Kestrel を使ったことがあったのですが最近見てみると開発も活発でなく前途不安です。2年程度放置されている感じです。Redis の List を使うことで Message Queueは可能なのですが、クライアントライブラリが悪いのかエラーが出て、エラーを無理やりハンドリングするとワーカーのメモリがどんどん増えていくので辛い感じでした。さらにCPU負荷も高いようですし。というわけでいろいろと調べてみました。

Message Queue の定番といえば RabbitMQ、開発も活発、ということではじめて使ってみました。多くの言語でのクライアントが存在していていい感じです。

RabbitMQ は多機能で使いにくいかなと思ったのですが、私の用途では、

Introduction
Work Queues
Tutorials for using RabbitMQ in various ways

の3つをみれば十分でした。英語ですが非常に分かりやすい説明です。RabbitMQ にはおおまかに、Work Queue、Pub/Sub, Routing, Topics, RPC の5つの機能があるのですが、Kestrel 的なものを考えている私にとっては Work Queue で十分です。

上記のリンクを読んで、コードを動かしてみればほぼ問題ないかと思います。RabbitMQでは、設定次第ではたとえばワーカーが落ちてしまっても、タスクは再送されるのでいい感じです。

クラスタリングや可用性を考えるとキリがないですが、単純な使い方も出来るということが分かりました。いろんな意味でおすすめ MQ です。