1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.queue.framework">
<title>Framework</title>
<para>
<classname>Zend_Queue</classname> ist ein Proxy der die Details des Queue Services
versteckt. Die Queue Services werden durch
<classname>Zend_Queue_Adapter_<service></classname> repräsentiert. Zum Beispiel ist
<classname>Zend_Queue_Adapter_Db</classname> eine Queue die Datenbanktabellen verwendet
um Nachrichten zu speichern und zu empfangen.
</para>
<para>
Anbei ist ein Beispiel für die Verwendung von Datenbanktabellen für ein Queueing System:
</para>
<programlisting language="php"><![CDATA[
$options = array(
'name' => 'queue1',
'driverOptions' => array(
'host' => '127.0.0.1',
'port' => '3306',
'username' => 'queue',
'password' => 'queue',
'dbname' => 'queue',
'type' => 'pdo_mysql'
)
);
// Erstellt eine Datenbank Queue.
// Zend_Queue fügt vorne Zend_Queue_Adapter_ an 'Db' für den Klassennamen an.
$queue = new Zend_Queue('Db', $options);
]]></programlisting>
<para>
Der Constructor von <classname>Zend_Queue</classname> erstellt eine
<classname>Zend_Queue_Adapter_Db</classname> und initialisiert den Adapter mit den
Konfigurationseinstellungen.
</para>
<para>
Die akzeptierten Konfigurationseinstellungen für jeden Adapter sind in den
<link linkend="zend.queue.adapters">Adapter Notizen</link> beschrieben.
</para>
<para>
<classname>Zend_Queue</classname> gibt Nachrichten zurück indem es die
<classname>Zend_Queue_Message_Iterator</classname> Klasse verwendet, welche eine
Implementation vom <acronym>SPL</acronym> <classname>Iterator</classname> und von
<classname>Countable</classname> ist.
<classname>Zend_Queue_Message_Iterator</classname> enthält ein Array von
<classname>Zend_Queue_Message</classname> Objekten.
</para>
<programlisting language="php"><![CDATA[
$messages = $queue->receive(5);
foreach ($messages as $i => $message) {
echo "$i) Nachricht => ", $message->body, "\n";
}
]]></programlisting>
<para>
Alle Exceptions die geworfen werden sind von der Klasse
<classname>Zend_Queue_Exception</classname>.
</para>
<sect2 id="zend.queue.framework.basics">
<title>Einführung</title>
<para>
<classname>Zend_Queue</classname> ist eine Proxy Klasse die einen Adapter
repräsentiert.
</para>
<para>
Die Methoden <methodname>send()</methodname>, <methodname>count($queue)</methodname>,
und <methodname>receive()</methodname> werden von jedem Adapter verwendet um mit den
Queues zu interagieren.
</para>
<para>
Die Methoden <methodname>createQueue()</methodname>,
<methodname>deleteQueue()</methodname> werden verwendet um Queues zu managen.
</para>
</sect2>
<sect2 id="zend.queue.framework.support">
<title>Gemeinsamkeiten für alle Adapter</title>
<para>
Die Queue Services die von <classname>Zend_Queue</classname> unterstützt werden
unterstützen nicht alle die gleichen Funktionalitäten. Zum Beispiel unterstützen
<classname>Zend_Queue_Adapter_Array</classname> und
<classname>Zend_Queue_Adapter_Db</classname> alle Funktionen, während
<classname>Zend_Queue_Adapter_Activemq</classname> das Auflisten und Löschen von Queues
der das Zählen von Nachrichten nicht unterstützt.
</para>
<para>
Man kann erkennen welche Funktionen unterstützt werden indem
<methodname>Zend_Queue::isSupported()</methodname> oder
<methodname>Zend_Queue::getCapabilities()</methodname> verwendet wird.
</para>
<itemizedlist>
<listitem>
<para>
<emphasis><methodname>createQueue()</methodname></emphasis> - Erstellt eine
Queue
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>deleteQueue()</methodname></emphasis> - Löscht eine Queue
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>send()</methodname></emphasis> - Sendet eine Nachricht
</para>
<para>
<methodname>send()</methodname> ist nicht in allen Adaptern vorhanden;
<classname>Zend_Queue_Adapter_Null</classname> unterstützt
<methodname>send()</methodname> nicht.
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>receive()</methodname></emphasis> - Empfängt eine
Nachricht
</para>
<para>
<methodname>receive()</methodname> ist nicht in allen Adaptern vorhanden;
<classname>Zend_Queue_Adapter_Null</classname> unterstützt
<methodname>receive()</methodname> nicht.
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>deleteMessage()</methodname></emphasis> - Löscht eine
Nachricht
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>count()</methodname></emphasis> - Zählt die Anzahl an
Nachrichten in einer Queue
</para>
</listitem>
<listitem>
<para>
<emphasis><methodname>isExists()</methodname></emphasis> - Prüft auf die
Existenz einer Queue
</para>
</listitem>
</itemizedlist>
<para>
<methodname>receive()</methodname> Methoden werden von jedem Adapter zur Verfügung
gestellt um mit Queues zu interagieren.
</para>
<para>
Die Methoden <methodname>createQueue()</methodname> und
<methodname>deleteQueue()</methodname> werden verwendet um Queues zu managen.
</para>
</sect2>
</sect1>
|