[MANUAL] German:
[zend.git] / documentation / manual / de / module_specs / Zend_Queue-Adapters.xml
blobb1a417e7cc039ae01cb8e94ca8aafe722ea32c70
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21819 -->
3 <!-- Reviewed: no -->
4 <sect1 id="zend.queue.adapters">
5     <title>Adapter</title>
7     <para>
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:
11     </para>
13     <itemizedlist>
14         <listitem>
15             <para><ulink url="http://activemq.apache.org/">Apache ActiveMQ</ulink>.</para>
16         </listitem>
18         <listitem>
19             <para>Eine Datenbank verwendende Queue über <classname>Zend_Db</classname>.</para>
20         </listitem>
22         <listitem>
23             <para>
24                 Eine <ulink url="http://memcachedb.org/memcacheq/">MemcacheQ</ulink> verwendende
25                 Queue über <classname>Memcache</classname>.
26             </para>
27         </listitem>
29         <listitem>
30             <para>
31                 Die Job Queue von <ulink
32                     url="http://www.zend.com/en/products/platform/">Zend Platform's</ulink>.
33             </para>
34         </listitem>
36         <listitem>
37             <para>Ein lokales Array. Nützlich für Unit Tests.</para>
38         </listitem>
39     </itemizedlist>
41     <note id="zend.queue.adapters.limitations">
42         <title>Einschränkungen</title>
44         <para>
45             Das Transaction Handling für Nachrichten wird nicht unterstützt.
46         </para>
47     </note>
49     <sect2 id="zend.queue.adapters.configuration">
50         <title>Spezielle Adapter - Konfigurations Optionen</title>
52         <para>
53             Wenn eine Standardeinstellung angezeigt wird, dann ist der Parameter optional.
54             Wenn keine Standardeinstellung spezifiziert ist dann wird der Parameter benötigt.
55         </para>
57         <sect3 id="zend.queue.adapters.configuration.apachemq">
58             <title>Apache ActiveMQ - Zend_Queue_Adapter_Activemq</title>
60             <para>
61                 Hier aufgeführte Optionen sind bekannte Notwendigkeiten. Nicht alle Nachrichten
62                 Server benötigen username oder password.
63             </para>
65             <itemizedlist>
66                 <listitem>
67                     <para>
68                          <emphasis>$options['name'] = '/temp/queue1';</emphasis>
69                     </para>
71                     <para>
72                         Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
73                     </para>
74                 </listitem>
76                 <listitem>
77                     <para>
78                         <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
79                     </para>
81                     <para>
82                         <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
83                     </para>
85                     <para>
86                         Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
87                     </para>
89                     <para>
90                         Der Standardwert für host ist '127.0.0.1'.
91                     </para>
92                 </listitem>
94                 <listitem>
95                     <para>
96                         <emphasis>$options['driverOptions']['port'] = 61613;</emphasis>
97                     </para>
99                     <para>Die Standardeinstellung für port ist 61613.</para>
100                 </listitem>
102                 <listitem>
103                     <para>
104                          <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
105                     </para>
107                     <para>
108                         Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
109                         Nachrichten Server.
110                     </para>
111                 </listitem>
113                 <listitem>
114                     <para>
115                         <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
116                     </para>
118                     <para>
119                         Optional für einige Nachrichten Server. Lesen Sie das Handbuch für Ihren
120                         Nachrichten Server.
121                     </para>
122                 </listitem>
124                 <listitem>
125                     <para>
126                         <emphasis>$options['driverOptions']['timeout_sec'] = 2;</emphasis>
127                     </para>
129                     <para>
130                         <emphasis>$options['driverOptions']['timeout_usec'] = 0;</emphasis>
131                     </para>
133                     <para>
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.
137                     </para>
138                 </listitem>
139             </itemizedlist>
140         </sect3>
142         <sect3 id="zend.queue.adapters.configuration.Db">
143             <title>Db - Zend_Queue_Adapter_Db</title>
145             <para>
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>.
154             </para>
156             <programlisting language="php"><![CDATA[
157 $options = array(
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
165     ),
166     'options' => array(
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
170     )
173 // Eine Datenbank Queue erstellen.
174 $queue = new Zend_Queue('Db', $options);
175 ]]></programlisting>
177             <itemizedlist>
178                 <listitem>
179                     <para>
180                          <emphasis>$options['name'] = 'queue1';</emphasis>
181                     </para>
183                     <para>
184                         Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
185                     </para>
186                 </listitem>
188                 <listitem>
189                     <para>
190                         <emphasis>$options['driverOptions']['type'] = 'Pdo';</emphasis>
191                     </para>
193                     <para>
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>
198                     </para>
199                 </listitem>
201                 <listitem>
202                     <para>
203                         <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
204                     </para>
206                     <para>
207                         <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
208                     </para>
210                     <para>
211                         Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
212                     </para>
214                     <para>
215                         Der Standardwert für host ist '127.0.0.1'.
216                     </para>
217                 </listitem>
219                 <listitem>
220                     <para>
221                          <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
222                     </para>
223                 </listitem>
225                 <listitem>
226                     <para>
227                         <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
228                     </para>
229                 </listitem>
231                 <listitem>
232                     <para>
233                         <emphasis>$options['driverOptions']['dbname'] = 'dbname';</emphasis>
234                     </para>
236                     <para>
237                         Der Name der Datenbank für die man die benötigten Tabellen erstellt hat.
238                         Siehe das unten stehende Notizen Kapitel.
239                     </para>
240                 </listitem>
241             </itemizedlist>
242         </sect3>
244         <sect3 id="zend.queue.adapters.configuration.memcacheq">
245             <title>MemcacheQ - Zend_Queue_Adapter_Memcacheq</title>
247             <itemizedlist>
248                 <listitem>
249                     <para>
250                          <emphasis>$options['name'] = 'queue1';</emphasis>
251                     </para>
253                     <para>
254                         Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
255                     </para>
256                 </listitem>
258                 <listitem>
259                     <para>
260                          <emphasis>$options['driverOptions']['host'] =
261                              'host.domain.tld';</emphasis>
262                     </para>
264                     <para>
265                          <emphasis>$options['driverOptions']['host'] = '127.0.0.1;'</emphasis>
266                     </para>
268                     <para>
269                         Man kann host auf eine IP Adresse oder einen Hostnamen setzen.
270                     </para>
272                     <para>
273                         Der Standardwert für host ist '127.0.0.1'.
274                     </para>
275                 </listitem>
277                 <listitem>
278                     <para>
279                         <emphasis>$options['driverOptions']['port'] = 22201;</emphasis>
280                     </para>
282                     <para>Die Standardeinstellung für port ist 22201.</para>
283                 </listitem>
284             </itemizedlist>
285         </sect3>
287         <sect3 id="zend.queue.adapters.configuration.platformjq">
288             <title>Zend Platform Job Queue - Zend_Queue_Adapter_PlatformJobQueue</title>
290             <itemizedlist>
291                 <listitem>
292                     <para>
293                          <emphasis>$options['daemonOptions']['host'] =
294                              '127.0.0.1:10003';</emphasis>
295                     </para>
297                     <para>
298                         Hostname und Port die mit dem Daemon der Zend Platform Job Queue
299                         korrespondieren, die man verwenden will. (Benötigt)
300                     </para>
301                 </listitem>
303                 <listitem>
304                     <para>
305                          <emphasis>$options['daemonOptions']['password'] = '1234';</emphasis>
306                     </para>
308                     <para>
309                         Das Passwort welches für den Zugriff auf den Daemon der Zend Platform Job
310                         Queue benötigt wird. (Benötigt)
311                     </para>
312                 </listitem>
313             </itemizedlist>
314         </sect3>
316         <sect3 id="zend.queue.adapters.configuration.array">
317             <title>Array - Zend_Queue_Adapter_Array</title>
319             <itemizedlist>
320                 <listitem>
321                     <para>
322                          <emphasis>$options['name'] = 'queue1';</emphasis>
323                     </para>
325                     <para>
326                         Das ist der Name der Queue die man anfangen will zu verwenden. (Benötigt)
327                     </para>
328                 </listitem>
329             </itemizedlist>
330         </sect3>
331     </sect2>
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>
340             <para>
341                 Die Dauer der Sichtbarkeit (visibility duration) ist für
342                 <classname>Zend_Queue_Adapter_Activemq</classname> nicht vorhanden.
343             </para>
345             <para>
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
349                 erstellen.
350             </para>
352             <para>
353                 ActiveMQ Queue oder Topic Namen müssen mit einem der folgenden beginnen:
354             </para>
356             <itemizedlist>
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>
361             </itemizedlist>
363             <para>
364                 Zum Beispiel: <filename>/queue/testing</filename>
365             </para>
367             <para>
368                 Die folgenden Funktionen werden nicht unterstützt:
369             </para>
371             <itemizedlist>
372                 <listitem>
373                     <para>
374                          <methodname>create()</methodname> - Erstellt eine Queue. Der Aufruf dieser
375                          Funktion wird eine Exception werfen.
376                     </para>
377                 </listitem>
379                 <listitem>
380                     <para>
381                         <methodname>delete()</methodname> - Löscht eine Queue. Der Aufruf dieser
382                         Funktion wird eine Exception werfen.
383                     </para>
384                 </listitem>
386                 <listitem>
387                     <para>
388                         <methodname>getQueues()</methodname> - Auflisten von Queues. Der Aufruf
389                         dieser Funktion wird eine Exception werden.
390                     </para>
391                 </listitem>
392             </itemizedlist>
393         </sect3>
395         <sect3 id="zend.queue.adapters.notes.zend_db">
396             <title>Zend_Db</title>
398             <para>
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.
402             </para>
403         </sect3>
405         <sect3 id="zend.queue.adapters.notes.memcacheQ">
406             <title>MemcacheQ</title>
408             <para>
409                 Memcache kann von <ulink
410                     url="http://www.danga.com/memcached/">http://www.danga.com/memcached/</ulink>
411                 heruntergeladen werden.
412             </para>
414             <para>
415                 MemcacheQ kann von <ulink
416                     url="http://memcachedb.org/memcacheq/">http://memcachedb.org/memcacheq/</ulink>
417                 heruntergeladen werden.
418             </para>
420             <itemizedlist>
421                 <listitem>
422                     <para>
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
426                         werfen.
427                     </para>
428                 </listitem>
430                 <listitem>
431                     <para>
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.
436                     </para>
437                 </listitem>
438             </itemizedlist>
439         </sect3>
441         <sect3 id="zend.queue.adapters.notes.platformjq">
442             <title>Zend Platform Job Queue</title>
444             <para>
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.
451             </para>
453             <para>
454                 Nachfolgend ist eine Liste von Methoden bei denen sich das Verhalten dieses
455                 Adapters vom Standardverhalten unterscheidet:
456             </para>
458             <itemizedlist>
459                 <listitem>
460                     <para>
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.
466                     </para>
467                 </listitem>
469                 <listitem>
470                     <para>
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
474                         wird.
475                     </para>
476                 </listitem>
478                 <listitem>
479                     <para>
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
483                         Exception.
484                     </para>
485                 </listitem>
487                 <listitem>
488                     <para>
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.
492                     </para>
493                 </listitem>
495                 <listitem>
496                     <para>
497                         <methodname>count()</methodname> - Gibt die totale Anzahl an Jobs zurück
498                         die aktuell in der Job Queue aktiv sind.
499                     </para>
500                 </listitem>
502                 <listitem>
503                     <para>
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
508                         Wert:
509                     </para>
511                     <itemizedlist>
512                         <listitem>
513                             <para>
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.
517                             </para>
518                         </listitem>
520                         <listitem>
521                             <para>
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:
525                             </para>
527                             <itemizedlist>
528                                 <listitem>
529                                     <para>
530                                         <varname>script</varname> - Den Namen des betroffenen
531                                         Job Queue Skripts. (Benötigt)
532                                     </para>
533                                 </listitem>
535                                 <listitem>
536                                     <para>
537                                         <varname>priority</varname> - Die Priorität des Jobs die
538                                         verwendet werden soll wenn er in der Queue registriert
539                                         wird.
540                                     </para>
541                                 </listitem>
543                                 <listitem>
544                                     <para>
545                                         <varname>name</varname> - Ein kurzer String der den Job
546                                         beschreibt.
547                                     </para>
548                                 </listitem>
550                                 <listitem>
551                                     <para>
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.
555                                     </para>
556                                 </listitem>
558                                 <listitem>
559                                     <para>
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.
564                                     </para>
565                                 </listitem>
567                                 <listitem>
568                                     <para>
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).
572                                     </para>
573                                 </listitem>
575                                 <listitem>
576                                     <para>
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.
581                                     </para>
582                                 </listitem>
584                                 <listitem>
585                                     <para>
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.
593                                     </para>
594                                 </listitem>
596                                 <listitem>
597                                     <para>
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.
602                                     </para>
603                                 </listitem>
605                                 <listitem>
606                                     <para>
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.
612                                     </para>
613                                 </listitem>
614                             </itemizedlist>
616                             <para>
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.
621                             </para>
622                         </listitem>
624                         <listitem>
625                             <para>
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.
629                             </para>
630                         </listitem>
631                     </itemizedlist>
633                     <para>
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.
638                     </para>
639                 </listitem>
641                 <listitem>
642                     <para>
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>.
646                     </para>
647                 </listitem>
649                 <listitem>
650                     <para>
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.
656                     </para>
657                 </listitem>
658             </itemizedlist>
659         </sect3>
661         <sect3 id="zend.queue.adapters.notes.array">
662             <title>Array (Lokal)</title>
664             <para>
665                 Die Array Queue ist ein <acronym>PHP</acronym> <methodname>array()</methodname>
666                 im lokalen Speicher. <classname>Zend_Queue_Adapter_Array</classname> ist gut
667                 für das Unit Testen.
668             </para>
669         </sect3>
670     </sect2>
671 </sect1>