1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20522 -->
4 <sect1 id="zend.queue.framework">
8 <classname>Zend_Queue</classname>は、
10 待ち行列サービスは、<classname>Zend_Queue_Adapter_<service></classname>によって表現されます。
11 たとえば、<classname>Zend_Queue_Adapter_Db</classname>は、
12 メッセージを格納・読み出しするためにデータベーステーブルを使う待ち行列です。
16 下記は、待ち行列システムのためにデータベーステーブルを利用する例です:
19 <programlisting language="php"><![CDATA[
22 'driverOptions' => array(
23 'host' => '127.0.0.1',
25 'username' => 'queue',
26 'password' => 'queue',
33 // Zend_Queue はクラス名として Zend_Queue_Adapter_ の後に 'Db' を付加します。
34 $queue = new Zend_Queue('Db', $options);
38 <classname>Zend_Queue</classname>コンストラクタは<classname>Zend_Queue_Adapter_Db</classname>を作成して、
44 <link linkend="zend.queue.adapters">アダプタの注意</link>で示されます
48 <classname>Zend_Queue</classname>は
49 クラス<classname>Zend_Queue_Message_Iterator</classname>を用いてメッセージを返します。
50 そして、それは<acronym>SPL</acronym> <classname>Iterator</classname>及び<classname>Countable</classname>の実装です。
51 <classname>Zend_Queue_Message_Iterator</classname>は、
52 <classname>Zend_Queue_Message</classname>オブジェクトの配列を含みます。
55 <programlisting language="php"><![CDATA[
56 $messages = $queue->receive(5);
57 foreach ($messages as $i => $message) {
58 echo "$i) Message => ", $message->body, "\n";
63 投げられるどんな例外も、クラス<classname>Zend_Queue_Exception</classname>です。
66 <sect2 id="zend.queue.framework.basics">
70 <classname>Zend_Queue</classname>は、
75 <methodname>send()</methodname>や
76 <methodname>count($queue)</methodname>、そして
77 <methodname>receive()</methodname>メソッドは、
78 待ち行列と相互に作用するために、それぞれのアダプタによって使用されます。
82 <methodname>createQueue()</methodname>及び
83 <methodname>deleteQueue()</methodname>メソッドは待ち行列を管理するために使われます。
87 <sect2 id="zend.queue.framework.support">
88 <title>アダプタの間の互換性</title>
91 <classname>Zend_Queue</classname>によってサポートされる待ち行列サービスは、
93 例えば、<classname>Zend_Queue_Adapter_Array</classname>及び
94 <classname>Zend_Queue_Adapter_Db</classname>は全ての関数をサポートしますが、
95 一方、<classname>Zend_Queue_Adapter_Activemq</classname>は
96 待ち行列の一覧や削除、そしてメッセージのカウントをサポートしません。
100 <methodname>Zend_Queue::isSupported()</methodname>または
101 <methodname>Zend_Queue::getCapabilities()</methodname>を使って
102 どんな関数がサポートされるか判定できます。
108 <emphasis><methodname>createQueue()</methodname></emphasis> - 待ち行列を作成
114 <emphasis><methodname>deleteQueue()</methodname></emphasis> - 待ち行列を削除
120 <emphasis><methodname>send()</methodname></emphasis> - メッセージを送信
124 <methodname>send()</methodname>はアダプタ全てで利用可能なわけではありません;
125 <classname>Zend_Queue_Adapter_Null</classname>は<methodname>send()</methodname>をサポートしません。
131 <emphasis><methodname>receive()</methodname></emphasis> - メッセージを受信
135 <methodname>receive()</methodname>はアダプタ全てで利用可能なわけではありません;
136 <classname>Zend_Queue_Adapter_Null</classname>は<methodname>receive()</methodname>をサポートしません。
142 <emphasis><methodname>deleteMessage()</methodname></emphasis> - メッセージを削除
148 <emphasis><methodname>count()</methodname></emphasis> - 待ち行列内のメッセージ数をカウント
154 <emphasis><methodname>isExists()</methodname></emphasis> - 待ち行列が存在するかチェック
160 <methodname>receive()</methodname>メソッドは、
161 待ち行列と相互に作用するために、それぞれのアダプタによって使用されます。
165 <methodname>createQueue()</methodname>及び
166 <methodname>deleteQueue()</methodname>メソッドは待ち行列を管理するために使われます。