CodeZine(コードジン)

特集ページ一覧

分散環境でのPHPによるタスク管理 - Zend_Queue -

Zend Frameworkによる実践的なPHPアプリケーション開発 32

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/01/14 14:00
目次

Activemqアダプタ

 Apache ActiveMQメッセージング関連のミドルウェアで、正にメッセージキューを扱うために作成されたシステムです。

準備

 Zend_QueueコポーネントとApache ActiveMQは、Stompプロトコル(Stompプロトコルについては次回説明します)で通信します。Apache ActiveMQでStompプロトコルを有効にするには設定ファイル「conf/activemq.xml」を編集し「transportConnectors」のエントリに1行追加します。

リスト10 ActiveMQでStompプロトコルを有効にする
...
        <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を起動します。

コンストラクタ

 コンストラクタへのオプションには次の値を設定できます。

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」をメッセージキューの名前として利用することにします。

リスト11 Activemqアダプタへのオプションの与え方の例(activemq.php)
// (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を利用したキューの操作の方法について見ていきたいと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Zend Framework入門

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5