AMQP/QPIDとは
AMQPはメッセージ交換によるアプリケーション通信の規格。QPIDはAMQPの実装形態の一つ。その他の実装としてrabbitmq等がある。
いわゆる、キューにメッセージを入れて、そのメッセージを別のアプリがキューから取り出して、というもの。
詳しい事はWiki等を参照。
AMQPの仕組み
AMQPは以下の3つの要素から成り立っている。
■exchange
メッセージをクライアントから受け取り、関連するqueueへメッセージを渡す。queueへメッセージを渡す方式は複数ある(後述
■queue
メッセージの保存とクライアントへの受け渡しを行う。
■bind
exchangeとqueueとの関連を定義する。
そして上記の機能を備えたサーバ(群)の事を「ブローカー」と呼ぶ。
実際に使ってみる
サンプルを見ながらのほうがわかりやすいので、まずは動かしてみる。
以下はFedora17の例。RHEL系でも既にQPIDはOSの標準として取り込まれているのでインストール方法はほとんど変わらない。
シングルホストでQPIDを起動し、認証なしで利用する。
■インストール
$ sudo yum install qpid-cpp-server qpid-tools
■設定
$ sudo vim /etc/qpidd.conf
cluster-mechanism=DIGEST-MD5 ANONYMOUS
■起動
$ sudo chkconfig qpidd on
$ sudo /etc/init.d/qpidd start
qpid-config
qpidの操作はqpid-configコマンドを利用して実行する。
$ qpid-config -h
Usage: qpid-config [OPTIONS] qpid-config [OPTIONS] exchanges [filter-string] qpid-config [OPTIONS] queues [filter-string] qpid-config [OPTIONS] add exchange <type> <name> [AddExchangeOptions] qpid-config [OPTIONS] del exchange <name> qpid-config [OPTIONS] add queue <name> [AddQueueOptions] qpid-config [OPTIONS] del queue <name> [DelQueueOptions] qpid-config [OPTIONS] bind <exchange-name> <queue-name> [binding-key] <for type xml> [-f -|filename] <for type header> [all|any] k1=v1 [, k2=v2...] qpid-config [OPTIONS] unbind <exchange-name> <queue-name> [binding-key] qpid-config [OPTIONS] reload-acl Examples: $ qpid-config add queue q $ qpid-config add exchange direct d -a localhost:5672 $ qpid-config exchanges -b 10.1.1.7:10000 $ qpid-config queues -b guest/guest@broker-host:10000 Add Exchange <type> values: direct Direct exchange for point-to-point communication fanout Fanout exchange for broadcast communication topic Topic exchange that routes messages using binding keys with wildcards headers Headers exchange that matches header fields against the binding keys xml XML Exchange - allows content filtering using an XQuery Queue Limit Actions: none (default) - Use broker's default policy reject - Reject enqueued messages flow-to-disk - Page messages to disk ring - Replace oldest unacquired message with new ring-strict - Replace oldest message, reject if oldest is acquired Replication levels: none - no replication configuration - replicate queue and exchange existence and bindings, but not messages. all - replicate configuration and messages
qpidの確認
qpid-config を引数無しで実行すると、qpidに定義されたexchange/queueの数を確認できる。
$ qpid-config
Total Exchanges: 8 topic: 3 headers: 1 fanout: 1 direct: 3 Total Queues: 1 durable: 0 non-durable: 1
exchanges/queues オプションをつけると、それぞれ定義された要素を確認できる。
$ qpid-config exchanges
Type Exchange Name Attributes ================================================== direct direct amq.direct --durable fanout amq.fanout --durable headers amq.match --durable topic amq.topic --durable direct qmf.default.direct topic qmf.default.topic topic qpid.management
$ qpid-config queues
Queue Name Attributes ================================================================= 82f6375f-de29-489d-8c61-5d45f4ecea5d:0.0 auto-del excl
次は実際にサンプルプログラムを使って、QPIDを利用してみる。
0 件のコメント:
コメントを投稿