1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21819 -->
4 <sect1 id="zend.queue.adapters">
8 <classname>Zend_Queue</classname> unterstützt alle Queues die das Interface
9 <classname>Zend_Queue_Adapter_AdapterInterface</classname> implementieren. Die folgenden
10 Nachrichten Queue Services werden unterstützt:
15 <para><ulink url="http://activemq.apache.org/">Apache ActiveMQ</ulink>.</para>
19 <para>Eine Datenbank verwendende Queue über <classname>Zend_Db</classname>.</para>
24 Eine <ulink url="http://memcachedb.org/memcacheq/">MemcacheQ</ulink> verwendende
25 Queue über <classname>Memcache</classname>.
31 Die Job Queue von <ulink
32 url="http://www.zend.com/en/products/platform/">Zend Platform's</ulink>.
37 <para>Ein lokales Array. Nützlich für Unit Tests.</para>
41 <note id="zend.queue.adapters.limitations">
42 <title>Einschränkungen</title>
45 Das Transaction Handling für Nachrichten wird nicht unterstützt.
49 <sect2 id="zend.queue.adapters.configuration">
50 <title>Spezielle Adapter - Konfigurations Optionen</title>
53 Wenn eine Standardeinstellung angezeigt wird, dann ist der Parameter optional.
54 Wenn keine Standardeinstellung spezifiziert ist dann wird der Parameter benötigt.
57 <sect3 id="zend.queue.adapters.configuration.apachemq">
58 <title>Apache ActiveMQ - Zend_Queue_Adapter_Activemq</title>
61 Hier aufgeführte Optionen sind bekannte Notwendigkeiten. Nicht alle Nachrichten
62 Server benötigen username oder password.
68 <emphasis>$options['name'] = '/temp/queue1';</emphasis>
72 Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
78 <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
82 <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
86 Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
90 Der Standardwert für host ist '127.0.0.1'.
96 <emphasis>$options['driverOptions']['port'] = 61613;</emphasis>
99 <para>Die Standardeinstellung für port ist 61613.</para>
104 <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
108 Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
115 <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
119 Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
126 <emphasis>$options['driverOptions']['timeout_sec'] = 2;</emphasis>
130 <emphasis>$options['driverOptions']['timeout_usec'] = 0;</emphasis>
134 Das ist die Menge an Zeit die
135 <classname>Zend_Queue_Adapter_Activemq</classname> für einen Lesezugriff
136 auf einem Socket wartet bevor keine Nachricht zurückgegeben wird.
142 <sect3 id="zend.queue.adapters.configuration.Db">
143 <title>Db - Zend_Queue_Adapter_Db</title>
146 Optionen des Treibers werden für wenige benötigte Optionen geprüft so wie
147 <emphasis>type</emphasis>, <emphasis>host</emphasis>,
148 <emphasis>username</emphasis>, <emphasis>password</emphasis> und
149 <emphasis>dbname</emphasis>. Man kann zusätzliche Parameter für
150 <methodname>Zend_DB::factory()</methodname> als Paramerter in
151 <varname>$options['driverOptions']</varname> übergeben. Ein Beispiel für eine
152 zusätzliche Option die hier nicht aufgeführt ist, aber übergeben werden könnte ist
153 <emphasis>port</emphasis>.
156 <programlisting language="php"><![CDATA[
158 'driverOptions' => array(
159 'host' => 'db1.domain.tld',
160 'username' => 'my_username',
161 'password' => 'my_password',
162 'dbname' => 'messaging',
163 'type' => 'pdo_mysql',
164 'port' => 3306, // Optionaler Parameter
167 // Verwenden von Zend_Db_Select für das Update, nicht alle Datenbanken
168 // unterstützen dieses Feature.
169 Zend_Db_Select::FOR_UPDATE => true
173 // Eine Datenbank Queue erstellen.
174 $queue = new Zend_Queue('Db', $options);
180 <emphasis>$options['name'] = 'queue1';</emphasis>
184 Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
190 <emphasis>$options['driverOptions']['type'] = 'Pdo';</emphasis>
194 <emphasis>type</emphasis> ist der Adapter von dem man will das Ihn
195 <methodname>Zend_Db::factory()</methodname> verwendet. Das ist der erste
196 Parameter für den Aufruf der Klassenmethode
197 <methodname>Zend_Db::factory()</methodname>
203 <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
207 <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
211 Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
215 Der Standardwert für host ist '127.0.0.1'.
221 <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
227 <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
233 <emphasis>$options['driverOptions']['dbname'] = 'dbname';</emphasis>
237 Der Name der Datenbank für die man die benötigten Tabellen erstellt hat.
238 Siehe das unten stehende Notizen Kapitel.
244 <sect3 id="zend.queue.adapters.configuration.memcacheq">
245 <title>MemcacheQ - Zend_Queue_Adapter_Memcacheq</title>
250 <emphasis>$options['name'] = 'queue1';</emphasis>
254 Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
260 <emphasis>$options['driverOptions']['host'] =
261 'host.domain.tld';</emphasis>
265 <emphasis>$options['driverOptions']['host'] = '127.0.0.1;'</emphasis>
269 Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
273 Der Standardwert für host ist '127.0.0.1'.
279 <emphasis>$options['driverOptions']['port'] = 22201;</emphasis>
282 <para>Die Standardeinstellung für port ist 22201.</para>
287 <sect3 id="zend.queue.adapters.configuration.platformjq">
288 <title>Zend Platform Job Queue - Zend_Queue_Adapter_PlatformJobQueue</title>
293 <emphasis>$options['daemonOptions']['host'] =
294 '127.0.0.1:10003';</emphasis>
298 Hostname und Port die mit dem Daemon der Zend Platform Job Queue
299 korrespondieren, die man verwenden will. (Benötigt)
305 <emphasis>$options['daemonOptions']['password'] = '1234';</emphasis>
309 Das Passwort welches für den Zugriff auf den Daemon der Zend Platform Job
310 Queue benötigt wird. (Benötigt)
316 <sect3 id="zend.queue.adapters.configuration.array">
317 <title>Array - Zend_Queue_Adapter_Array</title>
322 <emphasis>$options['name'] = 'queue1';</emphasis>
326 Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
333 <sect2 id="zend.queue.adapters.notes">
334 <title>Hinweise für spezielle Adapter</title>
335 <para>Die folgenden Adapter haben Hinweise:</para>
337 <sect3 id="zend.queue.adapters.notes.activemq">
338 <title>Apache ActiveMQ</title>
341 Die Dauer der Sichtbarkeit (visibility duration) ist für
342 <classname>Zend_Queue_Adapter_Activemq</classname> nicht vorhanden.
346 Wärend Apache's ActiveMQ mehrere Einschreibungen unterstützt, wird das von
347 <classname>Zend_Queue</classname> nicht unterstützt. Man muss ein neues
348 <classname>Zend_Queue</classname> Objekt für jede individuelle Einschreibung
353 ActiveMQ Queue oder Topic Namen müssen mit einem der folgenden beginnen:
357 <listitem><para><filename>/queue/</filename></para></listitem>
358 <listitem><para><filename>/topic/</filename></para></listitem>
359 <listitem><para><filename>/temp-queue/</filename></para></listitem>
360 <listitem><para><filename>/temp-topic/</filename></para></listitem>
364 Zum Beispiel: <filename>/queue/testing</filename>
368 Die folgenden Funktionen werden nicht unterstützt:
374 <methodname>create()</methodname> - Erstellt eine Queue. Der Aufruf dieser
375 Funktion wird eine Exception werfen.
381 <methodname>delete()</methodname> - Löscht eine Queue. Der Aufruf dieser
382 Funktion wird eine Exception werfen.
388 <methodname>getQueues()</methodname> - Auflisten von Queues. Der Aufruf
389 dieser Funktion wird eine Exception werden.
395 <sect3 id="zend.queue.adapters.notes.zend_db">
396 <title>Zend_Db</title>
399 Das Datenbank <acronym>SQL</acronym> Statement
400 <emphasis>CREATE TABLE ( ... )</emphasis> kann in
401 <filename>Zend/Queue/Adapter/Db/mysql.sql</filename> gefunden werden.
405 <sect3 id="zend.queue.adapters.notes.memcacheQ">
406 <title>MemcacheQ</title>
409 Memcache kann von <ulink
410 url="http://www.danga.com/memcached/">http://www.danga.com/memcached/</ulink>
411 heruntergeladen werden.
415 MemcacheQ kann von <ulink
416 url="http://memcachedb.org/memcacheq/">http://memcachedb.org/memcacheq/</ulink>
417 heruntergeladen werden.
423 <methodname>deleteMessage()</methodname> - Nachrichten werden von der Queue
424 gelöscht nachdem Sie von der Queue empfangen werden. Der Aufruf dieser
425 Funktion hätte keinen Effekt. Der Aufruf dieser Funktion wird keinen Fehler
432 <methodname>count()</methodname> oder
433 <methodname>count($adapter)</methodname> - MemcacheQ unterstützt keine
434 Methode für das Zählen der Anzahl an Elementen in einer Queue. Der Aufruf
435 dieser Funktion wird keinen Fehler werfen.
441 <sect3 id="zend.queue.adapters.notes.platformjq">
442 <title>Zend Platform Job Queue</title>
445 Job Queue ist ein Feature das von Zend Platform's Enterprise Solution angeboten
446 wird. Es ist keine traditionelle Nachrichten Queue, sondern erlaubt es ein Skript
447 zu queuen um es auszuführen, zusammen mit den Parametern die man an dieses
448 übergeben will. Man kann mehr über die Job Queue <ulink
449 url="http://www.zend.com/en/products/platform/">auf der Webseite von
450 zend.com</ulink> herausfinden.
454 Nachfolgend ist eine Liste von Methoden bei denen sich das Verhalten dieses
455 Adapters vom Standardverhalten unterscheidet:
461 <methodname>create()</methodname> - Zend Platform hat kein Konzept von
462 diskreten Queues; stattdessen erlaubt es Administratoren Skripte für die
463 Bearbeitung der Queue anzugeben. Da das hinzufügen von neuen Skripten auf
464 das Administrations Interface begrenzt ist, wirft diese Methode einfach
465 eine Exception um anzuzeigen das diese Aktion verboten ist.
471 <methodname>isExists()</methodname> - Genauso wie
472 <methodname>create()</methodname>, und da die Job Queue keine Notation für
473 benannte Queues hat wirft diese Methode eine Exception wenn Sie aufgerufen
480 <methodname>delete()</methodname> - Ähnlich wie
481 <methodname>create()</methodname>, ist das Löschen von JQ Skripten nicht
482 möglich, ausser über das Admin Interface; diese Methode wirft eine
489 <methodname>getQueues()</methodname> - Zend Platform erlaubt es nicht
490 über die <acronym>API</acronym> die angehängten Job Handling Skripte
491 einzusehen. Diese Methode wirft eine Exception.
497 <methodname>count()</methodname> - Gibt die totale Anzahl an Jobs zurück
498 die aktuell in der Job Queue aktiv sind.
504 <methodname>send()</methodname> - Diese Methode ist möglicherweise die eine
505 Methode welche sich am meisten von den anderen Adaptern unterscheidet.
506 Das <varname>$message</varname> Argument kann eine von drei möglichen
507 Typen sein und arbeitet unterschiedlich, basierend auf dem übergebenen
514 <acronym>string</acronym> - Der Name eines betroffenen Skripts das
515 in der Job Queue registriert ist. Wenn es auf diesem Weg übergeben
516 wird, werden keine Argumente an das Skript übergeben.
522 <acronym>array</acronym> - Ein Array von Werte mit denen ein
523 <classname>ZendApi_Job</classname> Objekt konfiguriert werden soll.
524 Dieses kann folgendes enthalten:
530 <varname>script</varname> - Den Namen des betroffenen
531 Job Queue Skripts. (Benötigt)
537 <varname>priority</varname> - Die Priorität des Jobs die
538 verwendet werden soll wenn er in der Queue registriert
545 <varname>name</varname> - Ein kurzer String der den Job
552 <varname>predecessor</varname> - Die ID eines Jobs von der
553 dieser abhängt, und welches aufgeführt werden muß bevor
554 dieses anfangen kann.
560 <varname>preserved</varname> - Ob der Job in der History
561 der Job Queue behalten werden soll. Standardmäßig aus;
562 wenn ein <constant>TRUE</constant> Wert übergeben wird,
563 dann wird er behalten.
569 <varname>user_variables</varname> - Ein Assoziatives Array
570 aller Variablen die man wärend der Ausführung des Jobs im
571 Geltungsbereich haben will (ähnlich benannten Argumenten).
577 <varname>interval</varname> - Wie oft, in Sekunden, der Job
578 ausgeführt werden soll. Standardmäßig ist das auf 0
579 gesetzt, was anzeigt das er einmal, und nur einmal
580 ausgeführt werden soll.
586 <varname>end_time</varname> - Eine abgelaufene Zeit, nach
587 welcher der Job nicht ausgeführt werden soll. Wenn der Job
588 so gesetzt wurde das er nur einmal ausgeführt wird, und
589 <varname>end_time</varname> übergeben wurde, dann wird der
590 Job nicht ausgeführt. Wenn der Job so gesetzt wurde das er
591 in einem Intervall ausgeführt wird, das wird er nicht mehr
592 ausgeführt bis <varname>end_time</varname> abgelaufen ist.
598 <varname>schedule_time</varname> - Ein
599 <acronym>UNIX</acronym> Zeitstempel der anzeigt wann der
600 Job ausgeführt werden soll; standardmäßig 0, was anzeigt
601 das der Job so früh wie möglich ausgeführt werden soll.
607 <varname>application_id</varname> - Der Identifikator der
608 Anwendung für den Job. Standardmäßig ist er
609 <constant>NULL</constant>, was anzeigt das automatisch
610 einer von der Queue zugeordnet wird, wenn die Queue einer
611 Anwendungs ID zugeordnet wird.
617 Wie erwähnt, wird nur das <varname>script</varname> Argument
618 benötigt; alle anderen anderen nur nur einfach vorhanden um es zu
619 erlauben feinkörnigere Details darüber zu übergeben, wie und wann
620 ein Job ausgeführt werden soll.
626 <classname>ZendApi_Job</classname> - Letztendlich kann einfach eine
627 Instanz von <classname>ZendApi_Job</classname> übergeben werden und
628 Sie wird zur Job Queue der Plattform übergeben.
634 In allen Instanzen gibt <methodname>send()</methodname> ein
635 <classname>Zend_Queue_Message_PlatformJob</classname> Objekt zurück,
636 welches Zugriff zum <classname>ZendApi_Job</classname> Objekt gibt und
637 verwendet wird um mit der Job Queue zu kommunizieren.
643 <methodname>receive()</methodname> - Empfängt eine Liste von aktiven Jobs
644 von der Job Queue. Jeder Job im zurückgegebenen Set ist eine Instanz von
645 <classname>Zend_Queue_Message_PlatformJob</classname>.
651 <methodname>deleteMessage()</methodname> - Da dieser Adapter nur mit der
652 Job Queue arbeitet, erwartet diese Methode das die übergebene
653 <varname>$message</varname> eine Instanz von
654 <classname>Zend_Queue_Message_PlatformJob</classname> ist, und wirft
655 andernfalls eine Exception.
661 <sect3 id="zend.queue.adapters.notes.array">
662 <title>Array (Lokal)</title>
665 Die Array Queue ist ein <acronym>PHP</acronym> <methodname>array()</methodname>
666 im lokalen Speicher. <classname>Zend_Queue_Adapter_Array</classname> ist gut