|
|
@@ -0,0 +1,169 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- Reviewed: no -->
|
|
|
+<!-- EN-Revision: 16603 -->
|
|
|
+<sect1 id="zend.queue.framework">
|
|
|
+ <title>フレームワーク</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Queue</classname>は、
|
|
|
+ 待ち行列サービスの詳細を隠す代理です。
|
|
|
+ 待ち行列サービスは、<classname>Zend_Queue_Adapter_<service></classname>によって表現されます。
|
|
|
+ たとえば、<classname>Zend_Queue_Adapter_Db</classname>は、
|
|
|
+ メッセージを格納・読み出しするためにデータベーステーブルを使う待ち行列です。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 下記は、待ち行列システムのためにデータベーステーブルを利用する例です:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$options = array(
|
|
|
+ 'name' => 'queue1',
|
|
|
+ 'driverOptions' => array(
|
|
|
+ 'host' => '127.0.0.1',
|
|
|
+ 'port' => '3306',
|
|
|
+ 'username' => 'queue',
|
|
|
+ 'password' => 'queue',
|
|
|
+ 'dbname' => 'queue',
|
|
|
+ 'type' => 'pdo_mysql'
|
|
|
+ )
|
|
|
+);
|
|
|
+
|
|
|
+// データベース待ち行列を作成します。
|
|
|
+// Zend_Queue はクラス名として Zend_Queue_Adapter_ の後に 'Db' を付加します。
|
|
|
+$queue = Zend_Queue('Db', $options);
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Queue</classname>コンストラクタは<classname>Zend_Queue_Adapter_Db</classname>を作成して、
|
|
|
+ 構成設定値でアダプタを初期化します。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 各々のアダプタに認められた構成設定値は、
|
|
|
+ <ulink url="zend.queue.adapters">アダプタの注意</ulink>で示されます
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Queue</classname>は
|
|
|
+ クラス<classname>Zend_Queue_Message_Iterator</classname>を用いてメッセージを返します。
|
|
|
+ そして、それは<acronym>SPL</acronym> <classname>Iterator</classname>及び<classname>Countable</classname>の実装です。
|
|
|
+ <classname>Zend_Queue_Message_Iterator</classname>は、
|
|
|
+ <classname>Zend_Queue_Message</classname>オブジェクトの配列を含みます。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$messages = $queue->receive(5);
|
|
|
+foreach ($messages as $i => $message) {
|
|
|
+ echo "$i) Message => ", $message->body, "\n";
|
|
|
+}
|
|
|
+]]></programlisting>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ 投げられるどんな例外も、クラス<classname>Zend_Queue_Exception</classname>です。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <sect2 id="zend.queue.framework.basics">
|
|
|
+ <title>導入</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Queue</classname>は、
|
|
|
+ アダプタを表現する代理クラスです。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>send()</methodname>や
|
|
|
+ <methodname>count($queue)</methodname>、そして
|
|
|
+ <methodname>receive()</methodname>メソッドは、
|
|
|
+ 待ち行列と相互に作用するために、それぞれのアダプタによって使用されます。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>createQueue()</methodname>及び
|
|
|
+ <methodname>deleteQueue()</methodname>メソッドは待ち行列を管理するために使われます。
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.queue.framework.support">
|
|
|
+ <title>アダプタの間の互換性</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Queue</classname>によってサポートされる待ち行列サービスは、
|
|
|
+ 同じ関数をサポートするとは限りません。
|
|
|
+ 例えば、<classname>Zend_Queue_Adapter_Array</classname>及び
|
|
|
+ <classname>Zend_Queue_Adapter_Db</classname>は全ての関数をサポートしますが、
|
|
|
+ 一方、<classname>Zend_Queue_Adapter_Activemq</classname>は
|
|
|
+ 待ち行列の一覧や削除、そしてメッセージのカウントをサポートしません。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>Zend_Queue::isSupported()</methodname>または
|
|
|
+ <methodname>Zend_Queue::getCapabilities()</methodname>を使って
|
|
|
+ どんな関数がサポートされるか判定できます。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <itemizedlist>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>create()</methodname> - 待ち行列を作成
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>delete()</methodname> - 待ち行列を削除
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>send()</methodname> - メッセージを送信
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>send()</methodname>はアダプタ全てで利用可能なわけではありません;
|
|
|
+ <classname>Zend_Queue_Adapter_Null</classname>は<methodname>send()</methodname>をサポートしません。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>receive()</methodname> - メッセージを受信
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>receive()</methodname>はアダプタ全てで利用可能なわけではありません;
|
|
|
+ <classname>Zend_Queue_Adapter_Null</classname>は<methodname>receive()</methodname>をサポートしません。
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>deleteMessage()</methodname> - メッセージを削除
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>count()</methodname> - 待ち行列内のメッセージ数をカウント
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <methodname>isExists()</methodname> - 待ち行列が存在するかチェック
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ </itemizedlist>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>receive()</methodname>メソッドは、
|
|
|
+ 待ち行列と相互に作用するために、それぞれのアダプタによって使用されます。
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <methodname>createQueue()</methodname>及び
|
|
|
+ <methodname>deleteQueue()</methodname>メソッドは待ち行列を管理するために使われます。
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+</sect1>
|