Zend_Service_Amazon_Sqs.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.amazon.sqs">
  5. <title>Zend_Service_Amazon_Sqs</title>
  6. <sect2 id="zend.service.amazon.sqs.introduction">
  7. <title>Einführung</title>
  8. <para>
  9. <ulink url="http://aws.amazon.com/sqs/">Amazon Simple Queue Service (Amazon
  10. SQS)</ulink> bietet eine einfache, hoch skalierbare, gehostete Queue für das
  11. Speichern von Nachrichten die zwischen Computern verschickt werden. Durch die
  12. Verwendung von Amazon SQS können Entwickler Daten einfach zwischen entfernten
  13. Komponenten Ihrer Anwendung verschieben, welche unterschiedliche Arbeiten durchführen,
  14. ohne das Nachrichten verloren gehen und auch ohne der Notwendigkeit das jede Komponente
  15. immer verfügbar sein muß. Amazon SQS macht es einfach einen automatischen Arbeitsablauf
  16. zu erstellen, und in enger Verknüpfung mit Amazon Elastic Compute Cloud (Amazon EC2)
  17. und auch den anderen <acronym>AWS</acronym> Infrastruktur Web Services zu arbeiten.
  18. </para>
  19. <para>
  20. Amazon SQS arbeitet durch die Bereitstellung von Amazon's Web-Scale Nachrichten
  21. Infrastruktur als Web Service. Jeder Computer im Internet kann Nachrichten hinzufügen
  22. und lesen ohne das Software installiert werden muß oder die Firewall Konfiguration zu
  23. ändern ist. Componenten von Anwendungen die Amazon SQS verwenden können unabhängig
  24. laufen und müssen nicht im gleichen Netzwerk sein, mit der gleichen Technologie
  25. entwickelt worden sein, oder zur gleichen Zeit laufen.
  26. </para>
  27. </sect2>
  28. <sect2 id="zend.service.amazon.sqs.registering">
  29. <title>Bei Amazon SQS registrieren</title>
  30. <para>
  31. Bevor man mit <classname>Zend_Service_Amazon_Sqs</classname> beginnt muß man einen
  32. Account registrieren. Sehen Sie bitte in die <ulink
  33. url="http://aws.amazon.com/sqs/faqs/">SQS FAQ</ulink> Seite auf der Amazon Website
  34. für weitere Informationen.
  35. </para>
  36. <para>
  37. Nach der Registrierung, bekommt man einen Anwendungsschlüssel und einen geheimen
  38. Schlüssel. Man benötigt beide um auf den SQS Service zugreifen zu können.
  39. </para>
  40. </sect2>
  41. <sect2 id="zend.service.amazon.sqs.apiDocumentation">
  42. <title>API Dokumentation</title>
  43. <para>
  44. Die <classname>Zend_Service_Amazon_Sqs</classname> Klasse bietet den
  45. <acronym>PHP</acronym> Wrapper zum Amazon SQS REST Interface. Bitte konsultieren Sie die
  46. <ulink
  47. url="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=31">Amazon
  48. SQS Dokumentation</ulink> für eine detailierte Beschreibung des Services. Man muß
  49. mit dem grundsätzlichen Konzept vertraut sein um dieses Service verwenden zu können.
  50. </para>
  51. </sect2>
  52. <sect2 id="zend.service.amazon.sqs.features">
  53. <title>Features</title>
  54. <para>
  55. <classname>Zend_Service_Amazon_Sqs</classname> bietet die folgende Funktionalität:
  56. </para>
  57. <itemizedlist>
  58. <listitem>
  59. <para>
  60. Einen einzelnen Punkt für die Konfiguration des Authentifizierungsdaten von
  61. amazon.sqs die über den kompletten amazon.sqs Namespace verwendet werden
  62. können.
  63. </para>
  64. </listitem>
  65. <listitem>
  66. <para>
  67. Ein Proxy Objekt das viel bequemer zu verwenden ist als ein
  68. <acronym>HTTP</acronym> Client alleine, indem er hauptsächlich die Notwendigkeit
  69. entfernt die <acronym>HTTP</acronym> POST Anfrage manuell zu erstellen und auf
  70. den REST Service zuzugreifen.
  71. </para>
  72. </listitem>
  73. <listitem>
  74. <para>
  75. Ein Antwort Wrapper der jeden Antwort Body durchsucht und eine Exception wirft
  76. wenn ein Fehler auftritt, und es unnötig macht die vielen Kommandos wiederholt
  77. auf Erfolg zu prüfen.
  78. </para>
  79. </listitem>
  80. <listitem>
  81. <para>
  82. Zusätzliche bequeme Methoden für einige der üblicheren Operationen.
  83. </para>
  84. </listitem>
  85. </itemizedlist>
  86. </sect2>
  87. <sect2 id="zend.service.amazon.sqs.storing-your-first">
  88. <title>Beginnen</title>
  89. <para>
  90. Sobald man sich bei Amazon SQS registriert hat ist man bereit seine eigene Queue zu
  91. erstellen und einige Nachrichten auf SQS zu speichern. Jede Queue kann eine unbegrenzte
  92. Anzahl an Nachrichten enthalten, die durch Ihren Namen identifiziert werden.
  93. </para>
  94. <para>
  95. Das folgende Beispiel demonstriert die Erstellung einer Queue, und das speichern sowie
  96. empfangen von Nachrichten.
  97. </para>
  98. <example id="zend.service.amazon.sqs.storing-your-first.example">
  99. <title>Beispiel der Verwendung von Zend_Service_Amazon_Sqs</title>
  100. <programlisting language="php"><![CDATA[
  101. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  102. $queue_url = $sqs->create('test');
  103. $message = 'Das ist ein Test';
  104. $message_id = $sqs->send($queue_url, $message);
  105. foreach ($sqs->receive($queue_url) as $message) {
  106. echo $message['body'].'<br/>';
  107. }
  108. ]]></programlisting>
  109. </example>
  110. <para>
  111. Das der <classname>Zend_Service_Amazon_Sqs</classname> Service eine Authentifizierung
  112. benötigt, kann man seine Zugangsdaten (AWS Schlüssel und geheimer Schlüssel) im
  113. Constructor angeben. Wenn man nur einen Account verwendet kann man standardmäßige
  114. Zugangsdaten für den Service setzen:
  115. </para>
  116. <programlisting language="php"><![CDATA[
  117. Zend_Service_Amazon_Sqs::setKeys($my_aws_key, $my_aws_secret_key);
  118. $sqs = new Zend_Service_Amazon_Sqs();
  119. ]]></programlisting>
  120. </sect2>
  121. <sect2 id="zend.service.amazon.sqs.queues">
  122. <title>Operationen der Queue</title>
  123. <para>
  124. Alle SQS Nachrichten werden in Queues gespeichert. Eine Queue muß erstellt werden bevor
  125. irgendwelche Operationen mit Nachrichten durchgeführt werden. Die Namen der Queues
  126. müssen in Verbindung mit dem Zugriffsschlüssel und den geheimen Schlüssel einmalig
  127. sein.
  128. </para>
  129. <para>
  130. Namen von Queues können kleingeschriebene Buchstaben, Ziffern, Punkte (.), Unterstriche
  131. (_) und Bindestriche (-) enthalten. Es sind keine anderen Symbole erlaubt. Die Namen
  132. von Queues dürfen eine maximal Länge von 80 Zeichen haben.
  133. </para>
  134. <itemizedlist>
  135. <listitem>
  136. <para>
  137. <methodname>create()</methodname> erstellt eine neue Queue.
  138. </para>
  139. </listitem>
  140. <listitem>
  141. <para>
  142. <methodname>delete()</methodname> entfernt alle Nachrichten in der Queue.
  143. </para>
  144. <example id="zend.service.amazon.sqs.queues.removalExample">
  145. <title>
  146. Beispiel für das Entfernen von Queues aus Zend_Service_Amazon_Sqs
  147. </title>
  148. <programlisting language="php"><![CDATA[
  149. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  150. $queue_url = $sqs->create('test_1');
  151. $sqs->delete($queue_url);
  152. ]]></programlisting>
  153. </example>
  154. </listitem>
  155. <listitem>
  156. <para>
  157. <methodname>count()</methodname> gibt die erwartete Anzahl von Nachrichten in
  158. der Queue zurück.
  159. </para>
  160. <example id="zend.service.amazon.sqs.queues.countExample">
  161. <title>Beispiel für das Zählen von Queues in Zend_Service_Amazon_Sqs</title>
  162. <programlisting language="php"><![CDATA[
  163. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  164. $queue_url = $sqs->create('test_1');
  165. $sqs->send($queue_url, 'Das ist ein Test');
  166. $count = $sqs->count($queue_url); // Gibt '1' zurück
  167. ]]></programlisting>
  168. </example>
  169. </listitem>
  170. <listitem>
  171. <para>
  172. <methodname>getQueues()</methodname> gibt eine Liste der Namen aller Queues
  173. zurück die dem Benutzer gehören.
  174. </para>
  175. <example id="zend.service.amazon.sqs.queues.listExample">
  176. <title>Beispiel für das Auflisten von Queues in Zend_Service_Amazon_Sqs</title>
  177. <programlisting language="php"><![CDATA[
  178. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  179. $list = $sqs->getQueues();
  180. foreach($list as $queue) {
  181. echo "Ich habe $queue Queues\n";
  182. }
  183. ]]></programlisting>
  184. </example>
  185. </listitem>
  186. </itemizedlist>
  187. </sect2>
  188. <sect2 id="zend.service.amazon.sqs.messages">
  189. <title>Operationen für Nachrichten</title>
  190. <para>
  191. Nachdem eine Queue erstellt wurde, können Nachrichten einfach in die Queue gesendet
  192. und zu einem späteren Zeitpunkt von Ihr empfangen werden. Nachrichten können eine Länge
  193. von bis zu 8kB haben. Wenn längere Nachrichten benötigt werden sollte in das Kapitel
  194. <ulink url="http://framework.zend.com/manual/en/zend.service.amazon.s3.html">S3</ulink>
  195. gesehen werden. Es gibt keine Begrenzung in der Anzahl der Nachrichten die eine Queue
  196. enthalten kann.
  197. </para>
  198. <itemizedlist>
  199. <listitem>
  200. <para>
  201. <methodname>sent($queue_url, $message)</methodname> sendet die Nachricht
  202. <varname>$message</varname> an die <acronym>URL</acronym>
  203. <code>$queue_url</code> der SQS Queue.
  204. </para>
  205. <example id="zend.service.amazon.sqs.messages.sendExample">
  206. <title>
  207. Beispiel für das Senden von Nachrichten an Zend_Service_Amazon_Sqs
  208. </title>
  209. <programlisting language="php"><![CDATA[
  210. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  211. $queue_url = $sqs->create('test_queue');
  212. $sqs->send($queue_url, 'Das ist eine Test Nachricht');
  213. ]]></programlisting>
  214. </example>
  215. </listitem>
  216. <listitem>
  217. <para>
  218. <methodname>receive($queue_url)</methodname> empfängt Nachrichten von der
  219. Queue.
  220. </para>
  221. <example id="zend.service.amazon.sqs.messages.receiveExample">
  222. <title>
  223. Beispiel für das Empfangen von Nachrichten von Zend_Service_Amazon_Sqs
  224. </title>
  225. <programlisting language="php"><![CDATA[
  226. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  227. $queue_url = $sqs->create('test_queue');
  228. $sqs->send($queue_url, 'Das ist eine Test Nachricht');
  229. foreach ($sqs->receive($queue_url) as $message) {
  230. echo "Nachricht ".$message['body'].' empfangen<br/>';
  231. }
  232. ]]></programlisting>
  233. </example>
  234. </listitem>
  235. <listitem>
  236. <para>
  237. <methodname>deleteMessage($queue_url, $handle)</methodname> löscht eine
  238. Nachricht von einer Queue. Die Nachricht muß zuerst durch Verwendung der
  239. <methodname>receive()</methodname> Methode empfangen werden bevor Sie gelöscht
  240. werden kann.
  241. </para>
  242. <example id="zend.service.amazon.sqs.messages.deleteExample">
  243. <title>
  244. Beispiel für das Löschen von Nachrichten aus Zend_Service_Amazon_Sqs
  245. </title>
  246. <programlisting language="php"><![CDATA[
  247. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  248. $queue_url = $sqs->create('test_queue');
  249. $sqs->send($queue_url, 'Das ist eine Test Nachricht');
  250. foreach ($sqs->receive($queue_url) as $message) {
  251. echo "Nachricht ".$message['body'].' empfangen<br/>';
  252. if ($sqs->deleteMessage($queue_url, $message['handle'])) {
  253. echo "Nachricht gelöscht";
  254. }
  255. else {
  256. echo "Nachricht nicht gelöscht";
  257. }
  258. }
  259. ]]></programlisting>
  260. </example>
  261. </listitem>
  262. </itemizedlist>
  263. </sect2>
  264. </sect1>