Activemqアダプタ
Apache ActiveMQメッセージング関連のミドルウェアで、正にメッセージキューを扱うために作成されたシステムです。
準備
Zend_QueueコポーネントとApache ActiveMQは、Stompプロトコル(Stompプロトコルについては次回説明します)で通信します。Apache ActiveMQでStompプロトコルを有効にするには設定ファイル「conf/activemq.xml」を編集し「transportConnectors」のエントリに1行追加します。
... <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> </transportConnectors> ...
▼
... <transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/> <transportConnector name="stomp" uri="stomp://localhost:61613"/> </transportConnectors> ...
この変更を行った後でApache ActiveMQを起動します。
コンストラクタ
コンストラクタへのオプションには次の値を設定できます。
name | メッセージキューの名前 |
driverOptions.host | ActiveMQの動作しているサーバ、デフォルトの値は'127.0.0.1' |
driverOptions.port | ActiveMQがStompプロトコルを受け付けているポート、デフォルトの値は61613 |
driverOptions.username | 認証を要求している場合は、ユーザ名を指定 |
driverOptions.password | 認証を要求している場合は、パスワードを指定 |
driverOptions.timeout_sec | ActiveMQの返答を待つ時間を秒単位で指定、デフォルトの値は 2 |
driverOptions.timeout_usec | ActiveMQの返答を待つ時間のマイクロ秒単位の部分を指定、デフォルトの値は 0 |
ここで「name」はメッセージキューの名前ですが、Apache ActiveMQの制限の関係で次のどれかで開始する必要があります:
- /queue/
- /topic/
- /temp-queue/
- /temp-topic/
次の例では「/queue/codezine_queue」をメッセージキューの名前として利用することにします。
// (1)オプション $options = array( 'name' => '/queue/codezine_queue', 'driverOptions' => array( 'host' => 'localhost', 'port' => 61613, /* Stomp経由でアクセスする */ ), ); // (2)コンストラクタ $queue = new Zend_Queue('Activemq', $options);
先程と同様に(1)でオプションを配列$optionに設定し、(2)でコンストラクタを作成しています。(2)では「Activemq」をアダプタに指定しています。
各メソッド
Activemqアダプタでは子キューを利用することができません。つまり、createQueueメソッドやdeleteQueueメソッドを利用することができません。
おわりに
今回はZend_Queueコンポーネントの基本的な使い方について見ていきました。オフラインで処理できるようなタスクを管理するための仕組みであるメッセージキューを、簡単に利用できることが分かったと思います。
次回は今回紹介できなかったアダプタの利用方法について見ていきたいと思います。また、アダプタの作成方法やStompを利用したキューの操作の方法について見ていきたいと思います。