| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 16641 -->
- <!-- 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 AWS 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 PHP 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 HTTP Client
- alleine, indem er hauptsächlich die Notwendigkeit entfernt die HTTP 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 = 'this is a 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>
- All messages SQS are stored in queues. A queue has to be created
- before any message operations. Queue names must be unique under your
- access key and secret key.
- </para>
- <para>
- Queue names can contain lowercase letters, digits, periods (.),
- underscores (_), and dashes (-). No other symbols allowed. Queue
- names can be a maximum of 80 characters.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>create()</methodname> creates a new queue.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>delete()</methodname> removes all messages in
- the queue.
- </para>
- <example id="zend.service.amazon.sqs.queues.removalExample">
- <title>Zend_Service_Amazon_Sqs Queue Removal Example</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> gets the approximate number
- of messages in the queue.
- </para>
- <example id="zend.service.amazon.sqs.queues.countExample">
- <title>Zend_Service_Amazon_Sqs Queue Count Example</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, 'this is a test');
- $count = $sqs->count($queue_url); // Returns '1'
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>getQueues()</methodname> returns the list of the
- names of all queues belonging to the user.
- </para>
- <example id="zend.service.amazon.sqs.queues.listExample">
- <title>Zend_Service_Amazon_Sqs Queue Listing Example</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 "I have queue $queue\n";
- }
- ]]></programlisting>
- </example>
- </listitem>
- </itemizedlist>
- </sect2>
- <sect2 id="zend.service.amazon.sqs.messages">
- <title>Message operations</title>
- <para>
- After a queue is created, simple messages can be sent into the queue
- then received at a later point in time. Messages can be up to 8KB in
- length. If longer messages are needed please see <ulink
- url="http://framework.zend.com/manual/en/zend.service.amazon.s3.html">S3</ulink>.
- There is no limit to the number of messages a queue can contain.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>sent($queue_url, $message)</methodname> send the
- <code>$message</code> to the <code>$queue_url</code> SQS
- queue URL.
- </para>
- <example id="zend.service.amazon.sqs.messages.sendExample">
- <title>Zend_Service_Amazon_Sqs Message Send Example</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, 'this is a test message');
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>receive($queue_url)</methodname> retrieves
- messages from the queue.
- </para>
- <example id="zend.service.amazon.sqs.messages.receiveExample">
- <title>Zend_Service_Amazon_Sqs Message Receive Example</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, 'this is a test message');
- foreach ($sqs->receive($queue_url) as $message) {
- echo "got message ".$message['body'].'<br/>';
- }
- ]]></programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- <methodname>deleteMessage($queue_url, $handle)</methodname>
- deletes a message from a queue. A message must first be
- received using the <methodname>receive()</methodname> method
- before it can be deleted.
- </para>
- <example id="zend.service.amazon.sqs.messages.deleteExample">
- <title>Zend_Service_Amazon_Sqs Message Delete Example</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, 'this is a test message');
- foreach ($sqs->receive($queue_url) as $message) {
- echo "got message ".$message['body'].'<br/>';
- if ($sqs->deleteMessage($queue_url, $message['handle'])) {
- echo "Message deleted";
- }
- else {
- echo "Message not deleted";
- }
- }
- ]]></programlisting>
- </example>
- </listitem>
- </itemizedlist>
- </sect2>
- </sect1>
|