大体意味はあっているとは思いますが、原文と照らし合わしながらご確認ください!
Introduction
RabbitMQ は AMQP - Advanced Message Queuing Protocol に従って、Producer からメッセージを受信し、Consumer に中継するプログラムです。RabbitMQ は Producer から受信したメッセージを格納する Queue を作成できます。ひとつの RabbitMQ に複数の Queue を作成でき、それぞれの Queue に任意の名前を設定できます。
Producer は、どの Queue にメッセージを格納するかを設定できます。また、複数の Producer が同じ Queue にメッセージを格納することもできます。Consumer は、どの Queue からメッセージを受信するかを設定できます。同様に、複数の Consumer が同じ Queue からメッセージを受信することもできます。
How to Install
CentOS 5.x でのインストールサンプルです。DAG レポジトリから erlang をインストールし、RabbitMQ をインストールします。この環境でインストールされる erlang は少し古いものですので、運用環境では適切な erlang をインストールしてください。
http://gist.github.com/1757613
Hello World
まずは簡単な Hello World を行うサンプルを紹介します。Producer として動作する Send と、Consumer として動作する Recv を実装します。Send は、メッセージを 1 件 RabbitMQ に送信し、指定した Queue に格納します。Recv は、RabbitMQ に接続している間は、指定した Queue から受信したメッセージをコンソールに出力し続けます。
Sending
必要なクラス ConnectionFactory, Connection, Channel をインポートします。1758838
クラス名と、メッセージを格納する Queue の名前を定義します。
1758841
RabbitMQ に接続します。
ConnectionFactory で localhost で起動している RabbitMQ との Connection を生成します。Connection はソケット通信を抽象化し、Channel を生成します。Channel を使用して、RabbitMQ API にリクエストを行います。
1758850
メッセージを送信します。
メッセージを送信する前に、メッセージを格納する Queue を宣言する必要があります。Queue の宣言は、キューが存在しない場合のみ生成されるため、何回行っても結果は同じです。送信するメッセージ "Hello World" は、バイト配列にエンコードします。
1758890
生成した Channel と Connection を閉じます。
1758938
Send のすべてのソースコードは Github を参照してください。
Receiving
必要なクラス ConnectionFactory, Connection, Channel, QueueingConsumer をインポートします。追加された QueueingConsumer は、RabbitMQ からプッシュ配信されたメッセージをバッファするために使用します。1759068
メッセージを受信します。
Send で宣言した Queue と同じ Queue を宣言します。Recv でも Send と同様に Queue を宣言していることに注意してください。なぜなら、Send を実行する前に Recv を実行できるので、既に Queue が存在するかを事前に確かめる必要があるからです。
宣言した Queue への新しいメッセージを Recv にプッシュ通知するように、RabbitMQ にリクエストします。RabbitMQ からのプッシュ通知を非同期に処理するために、QueueingConsumer を使用します。
QueueingConsumer は内部 Queue をもっており、RabbitMQ からプッシュ配信されたメッセージを内部 Queue に格納します。QueueingConsumer#nextDelivery() で、内部 Queue からメッセージを取り出して処理を行ないます。内部 Queue に格納されているメッセージを全て取り出した場合は、新しいメッセージが届くまで待機します。
1759738
Recv のすべてのソースコードは Github を参照してください。
Putting it all together
Recv は指定した Qeueu から受信したメッセージをコンソールに出力します。Recv はメッセージを待機し続けるため、終了するには Ctrl+C を送ってください。別のターミナルから Send を実行すると、既に起動している Recv でメッセージがコンソールに出力されることを確認できます。Queue の状態を確認するには、RabbitMQ の "rabbitmqctl list_queues" コマンドを実行してください。
次のチュートリアルでは、単純な "Work Queue" を紹介します!