Zend_Service_Amazon_Sqs.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 16641 -->
  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 AWS 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 PHP Wrapper zum
  45. Amazon SQS REST Interface. Bitte konsultieren Sie die <ulink
  46. url="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=31">Amazon
  47. SQS Dokumentation</ulink> für eine detailierte Beschreibung des Services. Man muß
  48. mit dem grundsätzlichen Konzept vertraut sein um dieses Service verwenden zu können.
  49. </para>
  50. </sect2>
  51. <sect2 id="zend.service.amazon.sqs.features">
  52. <title>Features</title>
  53. <para>
  54. <classname>Zend_Service_Amazon_Sqs</classname> bietet die folgende Funktionalität:
  55. </para>
  56. <itemizedlist>
  57. <listitem>
  58. <para>
  59. Einen einzelnen Punkt für die Konfiguration des Authentifizierungsdaten von
  60. amazon.sqs die über den kompletten amazon.sqs Namespace verwendet werden
  61. können.
  62. </para>
  63. </listitem>
  64. <listitem>
  65. <para>
  66. Ein Proxy Objekt das viel bequemer zu verwenden ist als ein HTTP Client
  67. alleine, indem er hauptsächlich die Notwendigkeit entfernt die HTTP POST
  68. Anfrage manuell zu erstellen und auf den REST Service zuzugreifen.
  69. </para>
  70. </listitem>
  71. <listitem>
  72. <para>
  73. Ein Antwort Wrapper der jeden Antwort Body durchsucht und eine Exception wirft
  74. wenn ein Fehler auftritt, und es unnötig macht die vielen Kommandos wiederholt
  75. auf Erfolg zu prüfen.
  76. </para>
  77. </listitem>
  78. <listitem>
  79. <para>
  80. Zusätzliche bequeme Methoden für einige der üblicheren Operationen.
  81. </para>
  82. </listitem>
  83. </itemizedlist>
  84. </sect2>
  85. <sect2 id="zend.service.amazon.sqs.storing-your-first">
  86. <title>Beginnen</title>
  87. <para>
  88. Sobald man sich bei Amazon SQS registriert hat ist man bereit seine eigene Queue zu
  89. erstellen und einige Nachrichten auf SQS zu speichern. Jede Queue kann eine unbegrenzte
  90. Anzahl an Nachrichten enthalten, die durch Ihren Namen identifiziert werden.
  91. </para>
  92. <para>
  93. Das folgende Beispiel demonstriert die Erstellung einer Queue, und das speichern sowie
  94. empfangen von Nachrichten.
  95. </para>
  96. <example id="zend.service.amazon.sqs.storing-your-first.example">
  97. <title>Beispiel der Verwendung von Zend_Service_Amazon_Sqs</title>
  98. <programlisting language="php"><![CDATA[
  99. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  100. $queue_url = $sqs->create('test');
  101. $message = 'this is a test';
  102. $message_id = $sqs->send($queue_url, $message);
  103. foreach ($sqs->receive($queue_url) as $message) {
  104. echo $message['body'].'<br/>';
  105. }
  106. ]]></programlisting>
  107. </example>
  108. <para>
  109. Das der <classname>Zend_Service_Amazon_Sqs</classname> Service eine Authentifizierung
  110. benötigt, kann man seine Zugangsdaten (AWS Schlüssel und geheimer Schlüssel) im
  111. Constructor angeben. Wenn man nur einen Account verwendet kann man standardmäßige
  112. Zugangsdaten für den Service setzen:
  113. </para>
  114. <programlisting language="php"><![CDATA[
  115. Zend_Service_Amazon_Sqs::setKeys($my_aws_key, $my_aws_secret_key);
  116. $sqs = new Zend_Service_Amazon_Sqs();
  117. ]]></programlisting>
  118. </sect2>
  119. <sect2 id="zend.service.amazon.sqs.queues">
  120. <title>Operationen der Queue</title>
  121. <para>
  122. All messages SQS are stored in queues. A queue has to be created
  123. before any message operations. Queue names must be unique under your
  124. access key and secret key.
  125. </para>
  126. <para>
  127. Queue names can contain lowercase letters, digits, periods (.),
  128. underscores (_), and dashes (-). No other symbols allowed. Queue
  129. names can be a maximum of 80 characters.
  130. </para>
  131. <itemizedlist>
  132. <listitem>
  133. <para>
  134. <methodname>create()</methodname> creates a new queue.
  135. </para>
  136. </listitem>
  137. <listitem>
  138. <para>
  139. <methodname>delete()</methodname> removes all messages in
  140. the queue.
  141. </para>
  142. <example id="zend.service.amazon.sqs.queues.removalExample">
  143. <title>Zend_Service_Amazon_Sqs Queue Removal Example</title>
  144. <programlisting language="php"><![CDATA[
  145. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  146. $queue_url = $sqs->create('test_1');
  147. $sqs->delete($queue_url);
  148. ]]></programlisting>
  149. </example>
  150. </listitem>
  151. <listitem>
  152. <para>
  153. <methodname>count()</methodname> gets the approximate number
  154. of messages in the queue.
  155. </para>
  156. <example id="zend.service.amazon.sqs.queues.countExample">
  157. <title>Zend_Service_Amazon_Sqs Queue Count Example</title>
  158. <programlisting language="php"><![CDATA[
  159. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  160. $queue_url = $sqs->create('test_1');
  161. $sqs->send($queue_url, 'this is a test');
  162. $count = $sqs->count($queue_url); // Returns '1'
  163. ]]></programlisting>
  164. </example>
  165. </listitem>
  166. <listitem>
  167. <para>
  168. <methodname>getQueues()</methodname> returns the list of the
  169. names of all queues belonging to the user.
  170. </para>
  171. <example id="zend.service.amazon.sqs.queues.listExample">
  172. <title>Zend_Service_Amazon_Sqs Queue Listing Example</title>
  173. <programlisting language="php"><![CDATA[
  174. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  175. $list = $sqs->getQueues();
  176. foreach($list as $queue) {
  177. echo "I have queue $queue\n";
  178. }
  179. ]]></programlisting>
  180. </example>
  181. </listitem>
  182. </itemizedlist>
  183. </sect2>
  184. <sect2 id="zend.service.amazon.sqs.messages">
  185. <title>Message operations</title>
  186. <para>
  187. After a queue is created, simple messages can be sent into the queue
  188. then received at a later point in time. Messages can be up to 8KB in
  189. length. If longer messages are needed please see <ulink
  190. url="http://framework.zend.com/manual/en/zend.service.amazon.s3.html">S3</ulink>.
  191. There is no limit to the number of messages a queue can contain.
  192. </para>
  193. <itemizedlist>
  194. <listitem>
  195. <para>
  196. <methodname>sent($queue_url, $message)</methodname> send the
  197. <code>$message</code> to the <code>$queue_url</code> SQS
  198. queue URL.
  199. </para>
  200. <example id="zend.service.amazon.sqs.messages.sendExample">
  201. <title>Zend_Service_Amazon_Sqs Message Send Example</title>
  202. <programlisting language="php"><![CDATA[
  203. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  204. $queue_url = $sqs->create('test_queue');
  205. $sqs->send($queue_url, 'this is a test message');
  206. ]]></programlisting>
  207. </example>
  208. </listitem>
  209. <listitem>
  210. <para>
  211. <methodname>receive($queue_url)</methodname> retrieves
  212. messages from the queue.
  213. </para>
  214. <example id="zend.service.amazon.sqs.messages.receiveExample">
  215. <title>Zend_Service_Amazon_Sqs Message Receive Example</title>
  216. <programlisting language="php"><![CDATA[
  217. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  218. $queue_url = $sqs->create('test_queue');
  219. $sqs->send($queue_url, 'this is a test message');
  220. foreach ($sqs->receive($queue_url) as $message) {
  221. echo "got message ".$message['body'].'<br/>';
  222. }
  223. ]]></programlisting>
  224. </example>
  225. </listitem>
  226. <listitem>
  227. <para>
  228. <methodname>deleteMessage($queue_url, $handle)</methodname>
  229. deletes a message from a queue. A message must first be
  230. received using the <methodname>receive()</methodname> method
  231. before it can be deleted.
  232. </para>
  233. <example id="zend.service.amazon.sqs.messages.deleteExample">
  234. <title>Zend_Service_Amazon_Sqs Message Delete Example</title>
  235. <programlisting language="php"><![CDATA[
  236. $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
  237. $queue_url = $sqs->create('test_queue');
  238. $sqs->send($queue_url, 'this is a test message');
  239. foreach ($sqs->receive($queue_url) as $message) {
  240. echo "got message ".$message['body'].'<br/>';
  241. if ($sqs->deleteMessage($queue_url, $message['handle'])) {
  242. echo "Message deleted";
  243. }
  244. else {
  245. echo "Message not deleted";
  246. }
  247. }
  248. ]]></programlisting>
  249. </example>
  250. </listitem>
  251. </itemizedlist>
  252. </sect2>
  253. </sect1>