2012年8月19日日曜日

apache qpid 概要と初期設定

AMQPサーバである Apache QPIDの話。


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 件のコメント:

コメントを投稿