Erlang で AMQP のメッセージング
最近流行っているらしい Twitter では、インスタントメッセージングに Erlang (で書かれたサービス)を使っているとのこと。
twitterブームの陰で注目を集める“Erlang” − @IT
====
twitterでは、メッセージングシステムに“ejabberd”を使っているという。これは“Erlang”で書かれたIMサーバだ。オープンなIM標準規格のJabberに対応している。また、クック氏がプレゼンテーションの中でRoRの代替として挙げている候補の1つ、“RabbitMQ”も、Erlangで書かれたメッセージングサーバだ
==== http://www.atmarkit.co.jp/news/200704/27/erlang.html
ほほう、プレゼン資料(まだ読んでない)の中には、Erlang で書かれたメッセージングサーバーも登場するらしい。Twitter 本体よりもそっちに興味が有るので、ちらっと外側だけ眺めてみます。
RabbitMQ - Open Source Enterprise Messaging
RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging.
==== http://www.rabbitmq.com/
ライセンスは、MPL1.1。プロトコルは AMQP。Erlang という言葉はあまり出てこない。インストールガイドのところでちょろっと。
Installation Instructions
- Install a recent version of Erlang.
- Download rabbitmq-server-N.M.tar.gz, where N.M is the version of RabbitMQ Server you want to install.
と思ったら、1ページ、Erlang で AMQP を実装する利点が述べてあった。ここは後でゆっくり読もう。
This page describes the advantages of using Erlang for Enterprise-class messaging systems.
Table of Contents
- Distribution
- Live code upgrade
- Built in Process Monitoring and Control
- Predictable High Speed
- Point to Point
- Enterprise Ready
- Portability
ダウンロードできるソースコードのファイル名には、1.0.0-alpha と書いてある。ロードマップ http://www.rabbitmq.com/roadmap.html には、時間軸は含まれていないよう。
ダウンロードしたソースコードの中身
- まず、直下に erlang と java の2つが在る。
- ディレクトリは、src, ebin, examples, include, scripts 。
- include/rabbit.hrl は、拡張子から、Erlang のヘッダーファイル。
- メッセージを表す構造体とログのモードが定義されているっぽい(Erlang の文法知らないので見た目からあてずっぽう)。
- src/ の下に、拡張子 erl のファイルが 26 個。全部で、6020 行。トップページに「コンパクトで保守が容易なコードベース」と書いてあるのは伊達じゃなさそうだ。ちなみに、AMQP の仕様書は、ざっと1ページあたり30行くらいで、70ページほど。2000 行くらいか。
- ebin/ というフォルダには、定数というか設定っぽいものが書いてあるファイルが2つ。
- ebin/rabbit.app を見ると、AMQP のバージョンは 0.8.1 なのかな。
- ebin/rabbit.rel はリリース情報っぽい。 {"rabbit", "0.2"} がバージョン情報か。
- include/rabbit.hrl は、拡張子から、Erlang のヘッダーファイル。
ちなみに、AMQP は、現在バージョン0.9になっているようだ。仕様書はここ http://www.amqp.org/tikiwiki/tiki-index.php?page=Download
全く中身には立ち入っていないけど、関数が他言語の勉強と Erlang の勉強と、AMQP の勉強を兼ねて読んでみるのも面白いかも?