1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20854 -->
4 <sect1 id="zend.queue.adapters">
8 <classname>Zend_Queue</classname>は、
9 インターフェース<classname>Zend_Queue_Adapter_AdapterInterface</classname>を実装する
11 以下のメッセージ待ち行列サービスがサポートされます:
17 <ulink url="http://activemq.apache.org/">Apache ActiveMQ</ulink>.
23 <classname>Zend_Db</classname>を経たデータベースによる待ち行列
29 <classname>Memcache</classname>による
30 <ulink url="http://memcachedb.org/memcacheq/">MemcacheQ</ulink>待ち行列
36 <ulink url="http://www.zend.co.jp/product/zendplatform.html">Zend Platform</ulink>
48 <note id="zend.queue.adapters.limitations">
52 メッセージ・トランザクション処理は、サポートされません。
56 <sect2 id="zend.queue.adapters.configuration">
57 <title>固有のアダプタ - 設定の構成</title>
60 デフォルトの設定が示される場合は、パラメータは任意です。
61 デフォルトの設定が指定されない場合は、パラメータが必要です。
64 <sect3 id="zend.queue.adapters.configuration.activemq">
65 <title>Apache ActiveMQ - Zend_Queue_Adapter_Activemq</title>
68 ここでリストされたオプションは、既知の必須条件です。
70 ユーザー名またはパスワードを必要とするというわけではありません。
76 <emphasis>$options['name'] = '/temp/queue1';</emphasis>
80 これは、使い始めたい待ち行列の名前です。(必須)
86 <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
90 <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
94 ホストをIPアドレスまたはホスト名にセットするかもしれません。
98 ホストのデフォルトの設定は '127.0.0.1' です。
104 <emphasis>$options['driverOptions']['port'] = 61613;</emphasis>
107 <para>ポートのデフォルトの設定は 61613 です。</para>
112 <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
116 一部のメッセージ発信サーバのために選択できます。
117 メッセージ発信サーバのためのマニュアルを読んでください。
123 <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
127 一部のメッセージ発信サーバのために選択できます。
128 メッセージ発信サーバのためのマニュアルを読んでください。
134 <emphasis>$options['driverOptions']['timeout_sec'] = 2;</emphasis>
138 <emphasis>$options['driverOptions']['timeout_usec'] = 0;</emphasis>
142 これは、<classname>Zend_Queue_Adapter_Activemq</classname>がメッセージを返さない前に
149 <sect3 id="zend.queue.adapters.configuration.Db">
150 <title>Db - Zend_Queue_Adapter_Db</title>
153 ドライバオプションは、多少の必須のオプションのためにチェックされます。
154 (例えば<emphasis>type</emphasis>、<emphasis>host</emphasis>、<emphasis>username</emphasis>、
155 <emphasis>password</emphasis>と<emphasis>dbname</emphasis>)
156 <varname>$options['driverOptions']</varname>でパラメータとして、
157 <methodname>Zend_DB::factory()</methodname>のために付加パラメータに沿って渡すかもしれません。
159 渡すことができる付加的なオプションは<emphasis>port</emphasis>でしょう。
162 <programlisting language="php"><![CDATA[
164 'driverOptions' => array(
165 'host' => 'db1.domain.tld',
166 'username' => 'my_username',
167 'password' => 'my_password',
168 'dbname' => 'messaging',
169 'type' => 'pdo_mysql',
170 'port' => 3306, // optional parameter.
173 // 更新のためにZend_Db_Selectを使います。
174 // 全てのデータベースがこのフィーチャをサポートできるわけではありません。
175 Zend_Db_Select::FOR_UPDATE => true
180 $queue = new Zend_Queue('Db', $options);
186 <emphasis>$options['name'] = 'queue1';</emphasis>
190 これは、使い始めたい待ち行列の名前です。(必須)
196 <emphasis>$options['driverOptions']['type'] = 'Pdo';</emphasis>
200 <emphasis>type</emphasis>は、
201 <methodname>Zend_Db::factory()</methodname>を
203 これは、<methodname>Zend_Db::factory()</methodname>
204 クラス・メソッド呼び出しの最初のパラメータです。
210 <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
214 <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
217 <para>ホストをIPアドレスまたはホスト名にセットするかもしれません。</para>
219 <para>ホストのデフォルトの設定は '127.0.0.1' です。</para>
224 <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
230 <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
236 <emphasis>$options['driverOptions']['dbname'] = 'dbname';</emphasis>
247 <sect3 id="zend.queue.adapters.configuration.memcacheq">
248 <title>MemcacheQ - Zend_Queue_Adapter_Memcacheq</title>
253 <emphasis>$options['name'] = 'queue1';</emphasis>
257 これは、使い始めたい待ち行列の名前です。(必須)
263 <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
267 <emphasis>$options['driverOptions']['host'] = '127.0.0.1;'</emphasis>
270 <para>ホストをIPアドレスまたはホスト名にセットするかもしれません。</para>
272 <para>ホストのデフォルトの設定は '127.0.0.1' です。</para>
277 <emphasis>$options['driverOptions']['port'] = 22201;</emphasis>
280 <para>ポートのデフォルトの設定は 22201 です。</para>
285 <sect3 id="zend.queue.adapters.configuration.platformjq">
286 <title>Zend Platform ジョブキュー - Zend_Queue_Adapter_PlatformJobQueue</title>
291 <emphasis>$options['daemonOptions']['host'] = '127.0.0.1:10003';</emphasis>
295 利用したい Zend Platform ジョブキューデーモンに対応するホスト名とポート。(必須)
301 <emphasis>$options['daemonOptions']['password'] = '1234';</emphasis>
305 Zend Platform ジョブキューデーモンにアクセスするために必要なパスワード。(必須)
311 <sect3 id="zend.queue.adapters.configuration.array">
312 <title>配列 - Zend_Queue_Adapter_Array</title>
317 <emphasis>$options['name'] = 'queue1';</emphasis>
321 これは、使い始めたい待ち行列の名前です。(必須)
328 <sect2 id="zend.queue.adapters.notes">
329 <title>アダプタ固有の注意</title>
331 <para>下記のアダプタには注意があります:</para>
333 <sect3 id="zend.queue.adapters.notes.activemq">
334 <title>Apache ActiveMQ</title>
337 <classname>Zend_Queue_Adapter_Activemq</classname>のための可視性期間は利用できません。
341 ApacheのActiveMQが複数のサブスクリプションをサポートするのに対して、
342 <classname>Zend_Queue</classname>はそうしません。
344 新しい<classname>Zend_Queue</classname>オブジェクトを作成しなければなりません。
348 ActiveMQの待ち行列または項目の名前は下記のうちの一つで始めなくてはいけません:
354 <filename>/queue/</filename>
360 <filename>/topic/</filename>
366 <filename>/temp-queue/</filename>
372 <filename>/temp-topic/</filename>
378 例えば: <filename>/queue/testing</filename>
388 <methodname>create()</methodname> - 待ち行列の作成。
395 <methodname>delete()</methodname> - 待ち行列の削除。
402 <methodname>getQueues()</methodname> - 待ち行列の一覧。
409 <sect3 id="zend.queue.adapters.notes.zend_db">
410 <title>Zend_Db</title>
413 データベース<emphasis>CREATE TABLE ( ... )</emphasis> <acronym>SQL</acronym>
414 文が<filename>Zend/Queue/Adapter/Db/mysql.sql</filename>にあります。
418 <sect3 id="zend.queue.adapters.notes.memcacheQ">
419 <title>MemcacheQ</title>
423 url="http://www.danga.com/memcached/">http://www.danga.com/memcached/</ulink>
429 url="http://memcachedb.org/memcacheq/">http://memcachedb.org/memcacheq/</ulink>
436 <methodname>deleteMessage()</methodname> -
437 メッセージは、待ち行列から受信と同時に削除されます。
445 <methodname>count()</methodname>または<methodname>count($adapter)</methodname>
446 - MemcacheQは、待ち行列で件数を数えるためのメソッドをサポートしません。
453 <sect3 id="zend.queue.adapters.notes.platformjq">
454 <title>Zend Platform ジョブキュー</title>
457 ジョブキューは、企業ソリューション商品 Zend Platform のフィーチャーです。
458 それは伝統的なメッセージキューではなく、その代わりに渡したいパラメータと一緒に、
459 実行するスクリプトを待ち行列に入れることができます。
460 <ulink url="http://www.zend.co.jp/product/zendplatform.html">zend.co.jpウェブサイト</ulink>
461 でジョブ・キューについてもっと知ることができます。
465 以下は、このアダプターの動作が標準的な提供物と相違するメソッドの一覧です:
471 <methodname>create()</methodname> - Zend Platformには、
473 その代わりに、管理者が実行段階ジョブにスクリプトを与えることができます。
474 新しいスクリプトを加えることは管理画面に制限されるので、
475 このメソッドは、単にアクションが禁じられていることを示す例外を投げます。
481 <methodname>isExists()</methodname> - <methodname>create()</methodname>
482 と同様に、ジョブキューには命名されたキューの概念がないので、
483 このメソッドは呼び出されると例外を投げます。
489 <methodname>delete()</methodname> - <methodname>create()</methodname>
490 と同様に、管理画面以外ではジョブキューのスクリプトの削除はできません。
497 <methodname>getQueues()</methodname> - Zend Platformは、
498 APIによってスクリプトを取り扱う、タスク生成されたジョブを参照できません。
505 <methodname>count()</methodname> - ジョブキューで現在アクティブなジョブの
512 <methodname>send()</methodname> - このメソッドは、恐らく最も他のアダプターと
513 異なるメソッドの一つです。<varname>$message</varname>引数は3種類のどれか1つで、
520 <acronym>string</acronym> - 実行するジョブキューに登録されるスクリプト名
521 このように渡されると、引数はスクリプトに与えられません。
527 <acronym>array</acronym> - <classname>ZendApi_Job</classname>オブジェクトを
528 設定する配列。これらは、以下を含むかもしれません。
534 <varname>script</varname> - 実行するジョブキュースクリプト名
541 <varname>priority</varname> - キューに名前を登録するときに使う
548 <varname>name</varname> - ジョブを記述する短い文字列
554 <varname>predecessor</varname> - これが始まるであろう前に
555 実行されなければいけない、これがそれによって左右される
562 <varname>preserved</varname> - ジョブ・キュー・ヒストリの
563 内部でジョブを保持するべきかどうか。デフォルトはoff。
564 保持するためには、 <constant>TRUE</constant> を渡します。
570 <varname>user_variables</varname> - ジョブの実行中に、
571 (命名された引数と同様に)保持したい変数すべての連想配列
577 <varname>interval</varname> - ジョブは、しばしば数秒単位で、
578 実行しなければならないでしょう。デフォルトは0で、
585 <varname>end_time</varname> - 期限満了時刻。それを過ぎると
586 ジョブは動作しません。もしジョブが一回だけ実行するよう設定
587 されているか、または<varname>end_time</varname>を過ぎると、
588 ジョブは実行されません。ジョブが一定間隔ごとに実行するように
589 設定されている場合、<varname>end_time</varname>を過ぎると
596 <varname>schedule_time</varname> - いつジョブを実行させるべきかを
597 示す<acronym>UNIX</acronym>タイムスタンプ。デフォルトは0で、
598 ジョブはできるだけ早く実行しなければならないことを示します。
604 <varname>application_id</varname> - ジョブのアプリケーション識別子。
605 デフォルトは <constant>NULL</constant> で、キューがアプリケーションIDを割り当てられたら、
606 アプリケーションIDがキューによって自動的に割り当てられることを
613 前述のように、<varname>script</varname>引数のみ必須です。他のすべては、
614 どのように、そして、いつジョブを走らせるべきかというような、
615 よりきめ細かい詳細を渡すために利用します。
621 <classname>ZendApi_Job</classname> - 結局、
622 単に<classname>ZendApi_Job</classname>のインスタンスを渡すかもしれません。
623 そして、それはPlatformのジョブキューに一緒に渡されます。
629 <methodname>send()</methodname>は、インスタンスの全てで
630 <classname>Zend_Queue_Message_PlatformJob</classname>オブジェクトを返します。
631 そして、ジョブキューと通信するために使う<classname>ZendApi_Job</classname>
638 <methodname>receive()</methodname> - ジョブキューから実行中のジョブのリストを
639 取得します。返されたセットの各々のジョブは、
640 <classname>Zend_Queue_Message_PlatformJob</classname>のインスタンスです。
646 <methodname>deleteMessage()</methodname> - このアダプターはジョブキューだけで
647 機能するので、このメソッドは、与えられた<varname>$message</varname>が
648 <classname>Zend_Queue_Message_PlatformJob</classname>のインスタンスであること
656 <sect3 id="zend.queue.adapters.notes.array">
657 <title>配列 (内部)</title>
660 配列待ち行列はローカルメモリ上の<acronym>PHP</acronym> <methodname>array()</methodname>です。
661 <classname>Zend_Queue_Adapter_Array</classname>はユニットテスト用に適しています。