Zend_Queue-Framework.xml 6.4 KB

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