| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.service.amazon.sqs">
- <title>Zend_Service_Amazon_Sqs</title>
- <sect2 id="zend.service.amazon.sqs.introduction">
- <title>Einführung</title>
- <para>
- <ulink url="http://aws.amazon.com/sqs/">Amazon Simple Queue Service (Amazon
- SQS)</ulink> bietet eine einfache, hoch skalierbare, gehostete Queue für das
- Speichern von Nachrichten die zwischen Computern verschickt werden. Durch die
- Verwendung von Amazon SQS können Entwickler Daten einfach zwischen entfernten
- Komponenten Ihrer Anwendung verschieben, welche unterschiedliche Arbeiten durchführen,
- ohne das Nachrichten verloren gehen und auch ohne der Notwendigkeit das jede Komponente
- immer verfügbar sein muß. Amazon SQS macht es einfach einen automatischen Arbeitsablauf
- zu erstellen, und in enger Verknüpfung mit Amazon Elastic Compute Cloud (Amazon EC2)
- und auch den anderen <acronym>AWS</acronym> Infrastruktur Web Services zu arbeiten.
- </para>
- <para>
- Amazon SQS arbeitet durch die Bereitstellung von Amazon's Web-Scale Nachrichten
- Infrastruktur als Web Service. Jeder Computer im Internet kann Nachrichten hinzufügen
- und lesen ohne das Software installiert werden muß oder die Firewall Konfiguration zu
- ändern ist. Componenten von Anwendungen die Amazon SQS verwenden können unabhängig
- laufen und müssen nicht im gleichen Netzwerk sein, mit der gleichen Technologie
- entwickelt worden sein, oder zur gleichen Zeit laufen.
- </para>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.registering">
- <title>Bei Amazon SQS registrieren</title>
- <para>
- Bevor man mit <classname>Zend_Service_Amazon_Sqs</classname> beginnt muß man einen
- Account registrieren. Sehen Sie bitte in die <ulink
- url="http://aws.amazon.com/sqs/faqs/">SQS FAQ</ulink> Seite auf der Amazon Website
- für weitere Informationen.
- </para>
- <para>
- Nach der Registrierung, bekommt man einen Anwendungsschlüssel und einen geheimen
- Schlüssel. Man benötigt beide um auf den SQS Service zugreifen zu können.
- </para>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.apiDocumentation">
- <title>API Dokumentation</title>
- <para>
- Die <classname>Zend_Service_Amazon_Sqs</classname> Klasse bietet den
- <acronym>PHP</acronym> Wrapper zum Amazon SQS REST Interface. Bitte konsultieren Sie die
- <ulink
- url="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=31">Amazon
- SQS Dokumentation</ulink> für eine detailierte Beschreibung des Services. Man muß
- mit dem grundsätzlichen Konzept vertraut sein um dieses Service verwenden zu können.
- </para>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.features">
- <title>Features</title>
- <para>
- <classname>Zend_Service_Amazon_Sqs</classname> bietet die folgende Funktionalität:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Einen einzelnen Punkt für die Konfiguration des Authentifizierungsdaten von
- amazon.sqs die über den kompletten amazon.sqs Namespace verwendet werden
- können.
- </para>
- </listitem>
- <listitem>
- <para>
- Ein Proxy Objekt das viel bequemer zu verwenden ist als ein
- <acronym>HTTP</acronym> Client alleine, indem er hauptsächlich die Notwendigkeit
- entfernt die <acronym>HTTP</acronym> POST Anfrage manuell zu erstellen und auf
- den REST Service zuzugreifen.
- </para>
- </listitem>
- <listitem>
- <para>
- Ein Antwort Wrapper der jeden Antwort Body durchsucht und eine Exception wirft
- wenn ein Fehler auftritt, und es unnötig macht die vielen Kommandos wiederholt
- auf Erfolg zu prüfen.
- </para>
- </listitem>
- <listitem>
- <para>
- Zusätzliche bequeme Methoden für einige der üblicheren Operationen.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.storing-your-first">
- <title>Beginnen</title>
- <para>
- Sobald man sich bei Amazon SQS registriert hat ist man bereit seine eigene Queue zu
- erstellen und einige Nachrichten auf SQS zu speichern. Jede Queue kann eine unbegrenzte
- Anzahl an Nachrichten enthalten, die durch Ihren Namen identifiziert werden.
- </para>
- <para>
- Das folgende Beispiel demonstriert die Erstellung einer Queue, und das speichern sowie
- empfangen von Nachrichten.
- </para>
- <example id="zend.service.amazon.sqs.storing-your-first.example">
- <title>Beispiel der Verwendung von Zend_Service_Amazon_Sqs</title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test');
- $message = 'Das ist ein Test';
- $message_id = $sqs->send($queue_url, $message);
- foreach ($sqs->receive($queue_url) as $message) {
- echo $message['body'].'<br/>';
- }
- ]]></programlisting>
- </example>
- <para>
- Das der <classname>Zend_Service_Amazon_Sqs</classname> Service eine Authentifizierung
- benötigt, kann man seine Zugangsdaten (AWS Schlüssel und geheimer Schlüssel) im
- Constructor angeben. Wenn man nur einen Account verwendet kann man standardmäßige
- Zugangsdaten für den Service setzen:
- </para>
- <programlisting language="php"><![CDATA[
- Zend_Service_Amazon_Sqs::setKeys($my_aws_key, $my_aws_secret_key);
- $sqs = new Zend_Service_Amazon_Sqs();
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.queues">
- <title>Operationen der Queue</title>
- <para>
- Alle SQS Nachrichten werden in Queues gespeichert. Eine Queue muß erstellt werden bevor
- irgendwelche Operationen mit Nachrichten durchgeführt werden. Die Namen der Queues
- müssen in Verbindung mit dem Zugriffsschlüssel und den geheimen Schlüssel einmalig
- sein.
- </para>
- <para>
- Namen von Queues können kleingeschriebene Buchstaben, Ziffern, Punkte (.), Unterstriche
- (_) und Bindestriche (-) enthalten. Es sind keine anderen Symbole erlaubt. Die Namen
- von Queues dürfen eine maximal Länge von 80 Zeichen haben.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>create()</methodname> erstellt eine neue Queue.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>delete()</methodname> entfernt alle Nachrichten in der Queue.
- </para>
- <example id="zend.service.amazon.sqs.queues.removalExample">
- <title>
- Beispiel für das Entfernen von Queues aus Zend_Service_Amazon_Sqs
- </title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test_1');
- $sqs->delete($queue_url);
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>count()</methodname> gibt die erwartete Anzahl von Nachrichten in
- der Queue zurück.
- </para>
- <example id="zend.service.amazon.sqs.queues.countExample">
- <title>Beispiel für das Zählen von Queues in Zend_Service_Amazon_Sqs</title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test_1');
- $sqs->send($queue_url, 'Das ist ein Test');
- $count = $sqs->count($queue_url); // Gibt '1' zurück
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>getQueues()</methodname> gibt eine Liste der Namen aller Queues
- zurück die dem Benutzer gehören.
- </para>
- <example id="zend.service.amazon.sqs.queues.listExample">
- <title>Beispiel für das Auflisten von Queues in Zend_Service_Amazon_Sqs</title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $list = $sqs->getQueues();
- foreach($list as $queue) {
- echo "Ich habe $queue Queues\n";
- }
- ]]></programlisting>
- </example>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.messages">
- <title>Operationen für Nachrichten</title>
- <para>
- Nachdem eine Queue erstellt wurde, können Nachrichten einfach in die Queue gesendet
- und zu einem späteren Zeitpunkt von Ihr empfangen werden. Nachrichten können eine Länge
- von bis zu 8kB haben. Wenn längere Nachrichten benötigt werden sollte in das Kapitel
- <ulink url="http://framework.zend.com/manual/en/zend.service.amazon.s3.html">S3</ulink>
- gesehen werden. Es gibt keine Begrenzung in der Anzahl der Nachrichten die eine Queue
- enthalten kann.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>sent($queue_url, $message)</methodname> sendet die Nachricht
- <varname>$message</varname> an die <acronym>URL</acronym>
- <code>$queue_url</code> der SQS Queue.
- </para>
- <example id="zend.service.amazon.sqs.messages.sendExample">
- <title>
- Beispiel für das Senden von Nachrichten an Zend_Service_Amazon_Sqs
- </title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test_queue');
- $sqs->send($queue_url, 'Das ist eine Test Nachricht');
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>receive($queue_url)</methodname> empfängt Nachrichten von der
- Queue.
- </para>
- <example id="zend.service.amazon.sqs.messages.receiveExample">
- <title>
- Beispiel für das Empfangen von Nachrichten von Zend_Service_Amazon_Sqs
- </title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test_queue');
- $sqs->send($queue_url, 'Das ist eine Test Nachricht');
- foreach ($sqs->receive($queue_url) as $message) {
- echo "Nachricht ".$message['body'].' empfangen<br/>';
- }
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>deleteMessage($queue_url, $handle)</methodname> löscht eine
- Nachricht von einer Queue. Die Nachricht muß zuerst durch Verwendung der
- <methodname>receive()</methodname> Methode empfangen werden bevor Sie gelöscht
- werden kann.
- </para>
- <example id="zend.service.amazon.sqs.messages.deleteExample">
- <title>
- Beispiel für das Löschen von Nachrichten aus Zend_Service_Amazon_Sqs
- </title>
- <programlisting language="php"><![CDATA[
- $sqs = new Zend_Service_Amazon_Sqs($my_aws_key, $my_aws_secret_key);
- $queue_url = $sqs->create('test_queue');
- $sqs->send($queue_url, 'Das ist eine Test Nachricht');
- foreach ($sqs->receive($queue_url) as $message) {
- echo "Nachricht ".$message['body'].' empfangen<br/>';
- if ($sqs->deleteMessage($queue_url, $message['handle'])) {
- echo "Nachricht gelöscht";
- }
- else {
- echo "Nachricht nicht gelöscht";
- }
- }
- ]]></programlisting>
- </example>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
|