| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.queue.adapters">
- <title>Adapter</title>
- <para>
- <classname>Zend_Queue</classname> unterstützt alle Queues die das Interface
- <classname>Zend_Queue_Adapter_AdapterInterface</classname> implementieren. Die folgenden
- Nachrichten Queue Services werden unterstützt:
- </para>
- <itemizedlist>
- <listitem>
- <para><ulink url="http://activemq.apache.org/">Apache ActiveMQ</ulink>.</para>
- </listitem>
- <listitem>
- <para>Eine Datenbank verwendende Queue über <classname>Zend_Db</classname>.</para>
- </listitem>
- <listitem>
- <para>
- Eine <ulink url="http://memcachedb.org/memcacheq/">MemcacheQ</ulink> verwendende
- Queue über <classname>Memcache</classname>.
- </para>
- </listitem>
- <listitem>
- <para>
- Die Job Queue von <ulink
- url="http://www.zend.com/en/products/platform/">Zend Platform's</ulink>.
- </para>
- </listitem>
- <listitem>
- <para>Ein lokales Array. Nützlich für Unit Tests.</para>
- </listitem>
- </itemizedlist>
- <note id="zend.queue.adapters.limitations">
- <title>Einschränkungen</title>
- <para>
- Das Transaction Handling für Nachrichten wird nicht unterstützt.
- </para>
- </note>
- <sect2 id="zend.queue.adapters.configuration">
- <title>Spezielle Adapter - Konfigurations Optionen</title>
- <para>
- Wenn eine Standardeinstellung angezeigt wird, dann ist der Parameter optional.
- Wenn keine Standardeinstellung spezifiziert ist dann wird der Parameter benötigt.
- </para>
- <sect3 id="zend.queue.adapters.configuration.apachemq">
- <title>Apache ActiveMQ - Zend_Queue_Adapter_Activemq</title>
- <para>
- Hier aufgeführte Optionen sind bekannte Notwendigkeiten. Nicht alle Nachrichten
- Server benötigen username oder password.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>$options['name'] = '/temp/queue1';</emphasis>
- </para>
- <para>
- Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
- </para>
- <para>
- <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
- </para>
- <para>
- Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
- </para>
- <para>
- Der Standardwert für host ist '127.0.0.1'.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['port'] = 61613;</emphasis>
- </para>
- <para>Die Standardeinstellung für port ist 61613.</para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
- </para>
- <para>
- Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
- Nachrichten Server.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
- </para>
- <para>
- Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
- Nachrichten Server.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['timeout_sec'] = 2;</emphasis>
- </para>
- <para>
- <emphasis>$options['driverOptions']['timeout_usec'] = 0;</emphasis>
- </para>
- <para>
- Das ist die Menge an Zeit die
- <classname>Zend_Queue_Adapter_Activemq</classname> für einen Lesezugriff
- auf einem Socket wartet bevor keine Nachricht zurückgegeben wird.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.configuration.Db">
- <title>Db - Zend_Queue_Adapter_Db</title>
- <para>
- Optionen des Treibers werden für wenige benötigte Optionen geprüft so wie
- <emphasis>type</emphasis>, <emphasis>host</emphasis>,
- <emphasis>username</emphasis>, <emphasis>password</emphasis> und
- <emphasis>dbname</emphasis>. Man kann zusätzliche Parameter für
- <methodname>Zend_DB::factory()</methodname> als Paramerter in
- <varname>$options['driverOptions']</varname> übergeben. Ein Beispiel für eine
- zusätzliche Option die hier nicht aufgeführt ist, aber übergeben werden könnte ist
- <emphasis>port</emphasis>.
- </para>
- <programlisting language="php"><![CDATA[
- $options = array(
- 'driverOptions' => array(
- 'host' => 'db1.domain.tld',
- 'username' => 'my_username',
- 'password' => 'my_password',
- 'dbname' => 'messaging',
- 'type' => 'pdo_mysql',
- 'port' => 3306, // Optionaler Parameter
- ),
- 'options' => array(
- // Verwenden von Zend_Db_Select für das Update, nicht alle Datenbanken
- // unterstützen dieses Feature.
- Zend_Db_Select::FOR_UPDATE => true
- )
- );
- // Eine Datenbank Queue erstellen.
- $queue = new Zend_Queue('Db', $options);
- ]]></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>$options['name'] = 'queue1';</emphasis>
- </para>
- <para>
- Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['type'] = 'Pdo';</emphasis>
- </para>
- <para>
- <emphasis>type</emphasis> ist der Adapter von dem man will das Ihn
- <methodname>Zend_Db::factory()</methodname> verwendet. Das ist der erste
- Parameter für den Aufruf der Klassenmethode
- <methodname>Zend_Db::factory()</methodname>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
- </para>
- <para>
- <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
- </para>
- <para>
- Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
- </para>
- <para>
- Der Standardwert für host ist '127.0.0.1'.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['dbname'] = 'dbname';</emphasis>
- </para>
- <para>
- Der Name der Datenbank für die man die benötigten Tabellen erstellt hat.
- Siehe das unten stehende Notizen Kapitel.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.configuration.memcacheq">
- <title>MemcacheQ - Zend_Queue_Adapter_Memcacheq</title>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>$options['name'] = 'queue1';</emphasis>
- </para>
- <para>
- Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['host'] =
- 'host.domain.tld';</emphasis>
- </para>
- <para>
- <emphasis>$options['driverOptions']['host'] = '127.0.0.1;'</emphasis>
- </para>
- <para>
- Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
- </para>
- <para>
- Der Standardwert für host ist '127.0.0.1'.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['driverOptions']['port'] = 22201;</emphasis>
- </para>
- <para>Die Standardeinstellung für port ist 22201.</para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.configuration.platformjq">
- <title>Zend Platform Job Queue - Zend_Queue_Adapter_PlatformJobQueue</title>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>$options['daemonOptions']['host'] =
- '127.0.0.1:10003';</emphasis>
- </para>
- <para>
- Hostname und Port die mit dem Daemon der Zend Platform Job Queue
- korrespondieren, die man verwenden will. (Benötigt)
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>$options['daemonOptions']['password'] = '1234';</emphasis>
- </para>
- <para>
- Das Passwort welches für den Zugriff auf den Daemon der Zend Platform Job
- Queue benötigt wird. (Benötigt)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.configuration.array">
- <title>Array - Zend_Queue_Adapter_Array</title>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>$options['name'] = 'queue1';</emphasis>
- </para>
- <para>
- Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- </sect2>
- <sect2 id="zend.queue.adapters.notes">
- <title>Hinweise für spezielle Adapter</title>
- <para>Die folgenden Adapter haben Hinweise:</para>
- <sect3 id="zend.queue.adapters.notes.activemq">
- <title>Apache ActiveMQ</title>
- <para>
- Die Dauer der Sichtbarkeit (visibility duration) ist für
- <classname>Zend_Queue_Adapter_Activemq</classname> nicht vorhanden.
- </para>
- <para>
- Wärend Apache's ActiveMQ mehrere Einschreibungen unterstützt, wird das von
- <classname>Zend_Queue</classname> nicht unterstützt. Man muss ein neues
- <classname>Zend_Queue</classname> Objekt für jede individuelle Einschreibung
- erstellen.
- </para>
- <para>
- ActiveMQ Queue oder Topic Namen müssen mit einem der folgenden beginnen:
- </para>
- <itemizedlist>
- <listitem><para><filename>/queue/</filename></para></listitem>
- <listitem><para><filename>/topic/</filename></para></listitem>
- <listitem><para><filename>/temp-queue/</filename></para></listitem>
- <listitem><para><filename>/temp-topic/</filename></para></listitem>
- </itemizedlist>
- <para>
- Zum Beispiel: <filename>/queue/testing</filename>
- </para>
- <para>
- Die folgenden Funktionen werden nicht unterstützt:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>create()</methodname> - Erstellt eine Queue. Der Aufruf dieser
- Funktion wird eine Exception werfen.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>delete()</methodname> - Löscht eine Queue. Der Aufruf dieser
- Funktion wird eine Exception werfen.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>getQueues()</methodname> - Auflisten von Queues. Der Aufruf
- dieser Funktion wird eine Exception werden.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.notes.zend_db">
- <title>Zend_Db</title>
- <para>
- Das Datenbank <acronym>SQL</acronym> Statement
- <emphasis>CREATE TABLE ( ... )</emphasis> kann in
- <filename>Zend/Queue/Adapter/Db/mysql.sql</filename> gefunden werden.
- </para>
- </sect3>
- <sect3 id="zend.queue.adapters.notes.memcacheQ">
- <title>MemcacheQ</title>
- <para>
- Memcache kann von <ulink
- url="http://www.danga.com/memcached/">http://www.danga.com/memcached/</ulink>
- heruntergeladen werden.
- </para>
- <para>
- MemcacheQ kann von <ulink
- url="http://memcachedb.org/memcacheq/">http://memcachedb.org/memcacheq/</ulink>
- heruntergeladen werden.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>deleteMessage()</methodname> - Nachrichten werden von der Queue
- gelöscht nachdem Sie von der Queue empfangen werden. Der Aufruf dieser
- Funktion hätte keinen Effekt. Der Aufruf dieser Funktion wird keinen Fehler
- werfen.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>count()</methodname> oder
- <methodname>count($adapter)</methodname> - MemcacheQ unterstützt keine
- Methode für das Zählen der Anzahl an Elementen in einer Queue. Der Aufruf
- dieser Funktion wird keinen Fehler werfen.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.notes.platformjq">
- <title>Zend Platform Job Queue</title>
- <para>
- Job Queue ist ein Feature das von Zend Platform's Enterprise Solution angeboten
- wird. Es ist keine traditionelle Nachrichten Queue, sondern erlaubt es ein Skript
- zu queuen um es auszuführen, zusammen mit den Parametern die man an dieses
- übergeben will. Man kann mehr über die Job Queue <ulink
- url="http://www.zend.com/en/products/platform/">auf der Webseite von
- zend.com</ulink> herausfinden.
- </para>
- <para>
- Nachfolgend ist eine Liste von Methoden bei denen sich das Verhalten dieses
- Adapters vom Standardverhalten unterscheidet:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>create()</methodname> - Zend Platform hat kein Konzept von
- diskreten Queues; stattdessen erlaubt es Administratoren Skripte für die
- Bearbeitung der Queue anzugeben. Da das hinzufügen von neuen Skripten auf
- das Administrations Interface begrenzt ist, wirft diese Methode einfach
- eine Exception um anzuzeigen das diese Aktion verboten ist.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>isExists()</methodname> - Genauso wie
- <methodname>create()</methodname>, und da die Job Queue keine Notation für
- benannte Queues hat wirft diese Methode eine Exception wenn Sie aufgerufen
- wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>delete()</methodname> - Ähnlich wie
- <methodname>create()</methodname>, ist das Löschen von JQ Skripten nicht
- möglich, ausser über das Admin Interface; diese Methode wirft eine
- Exception.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>getQueues()</methodname> - Zend Platform erlaubt es nicht
- über die <acronym>API</acronym> die angehängten Job Handling Skripte
- einzusehen. Diese Methode wirft eine Exception.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>count()</methodname> - Gibt die totale Anzahl an Jobs zurück
- die aktuell in der Job Queue aktiv sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>send()</methodname> - Diese Methode ist möglicherweise die eine
- Methode welche sich am meisten von den anderen Adaptern unterscheidet.
- Das <varname>$message</varname> Argument kann eine von drei möglichen
- Typen sein und arbeitet unterschiedlich, basierend auf dem übergebenen
- Wert:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <acronym>string</acronym> - Der Name eines betroffenen Skripts das
- in der Job Queue registriert ist. Wenn es auf diesem Weg übergeben
- wird, werden keine Argumente an das Skript übergeben.
- </para>
- </listitem>
- <listitem>
- <para>
- <acronym>array</acronym> - Ein Array von Werte mit denen ein
- <classname>ZendApi_Job</classname> Objekt konfiguriert werden soll.
- Dieses kann folgendes enthalten:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <varname>script</varname> - Den Namen des betroffenen
- Job Queue Skripts. (Benötigt)
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>priority</varname> - Die Priorität des Jobs die
- verwendet werden soll wenn er in der Queue registriert
- wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>name</varname> - Ein kurzer String der den Job
- beschreibt.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>predecessor</varname> - Die ID eines Jobs von der
- dieser abhängt, und welches aufgeführt werden muß bevor
- dieses anfangen kann.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>preserved</varname> - Ob der Job in der History
- der Job Queue behalten werden soll. Standardmäßig aus;
- wenn ein <constant>TRUE</constant> Wert übergeben wird,
- dann wird er behalten.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>user_variables</varname> - Ein Assoziatives Array
- aller Variablen die man während der Ausführung des Jobs im
- Geltungsbereich haben will (ähnlich benannten Argumenten).
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>interval</varname> - Wie oft, in Sekunden, der Job
- ausgeführt werden soll. Standardmäßig ist das auf 0
- gesetzt, was anzeigt das er einmal, und nur einmal
- ausgeführt werden soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>end_time</varname> - Eine abgelaufene Zeit, nach
- welcher der Job nicht ausgeführt werden soll. Wenn der Job
- so gesetzt wurde das er nur einmal ausgeführt wird, und
- <varname>end_time</varname> übergeben wurde, dann wird der
- Job nicht ausgeführt. Wenn der Job so gesetzt wurde das er
- in einem Intervall ausgeführt wird, das wird er nicht mehr
- ausgeführt bis <varname>end_time</varname> abgelaufen ist.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>schedule_time</varname> - Ein
- <acronym>UNIX</acronym> Zeitstempel der anzeigt wann der
- Job ausgeführt werden soll; standardmäßig 0, was anzeigt
- das der Job so früh wie möglich ausgeführt werden soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <varname>application_id</varname> - Der Identifikator der
- Anwendung für den Job. Standardmäßig ist er
- <constant>NULL</constant>, was anzeigt das automatisch
- einer von der Queue zugeordnet wird, wenn die Queue einer
- Anwendungs ID zugeordnet wird.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Wie erwähnt, wird nur das <varname>script</varname> Argument
- benötigt; alle anderen anderen nur nur einfach vorhanden um es zu
- erlauben feinkörnigere Details darüber zu übergeben, wie und wann
- ein Job ausgeführt werden soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>ZendApi_Job</classname> - Letztendlich kann einfach eine
- Instanz von <classname>ZendApi_Job</classname> übergeben werden und
- Sie wird zur Job Queue der Plattform übergeben.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- In allen Instanzen gibt <methodname>send()</methodname> ein
- <classname>Zend_Queue_Message_PlatformJob</classname> Objekt zurück,
- welches Zugriff zum <classname>ZendApi_Job</classname> Objekt gibt und
- verwendet wird um mit der Job Queue zu kommunizieren.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>receive()</methodname> - Empfängt eine Liste von aktiven Jobs
- von der Job Queue. Jeder Job im zurückgegebenen Set ist eine Instanz von
- <classname>Zend_Queue_Message_PlatformJob</classname>.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>deleteMessage()</methodname> - Da dieser Adapter nur mit der
- Job Queue arbeitet, erwartet diese Methode das die übergebene
- <varname>$message</varname> eine Instanz von
- <classname>Zend_Queue_Message_PlatformJob</classname> ist, und wirft
- andernfalls eine Exception.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.queue.adapters.notes.array">
- <title>Array (Lokal)</title>
- <para>
- Die Array Queue ist ein <acronym>PHP</acronym> <methodname>array()</methodname>
- im lokalen Speicher. <classname>Zend_Queue_Adapter_Array</classname> ist gut
- für das Unit Testen.
- </para>
- </sect3>
- </sect2>
- </sect1>
|