2
0
Переглянути джерело

[DOCUMENTATION] German:

- sync up to r16590

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16819 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 роки тому
батько
коміт
cbe92dd4ad

+ 12 - 1
documentation/manual/de/manual.xml.in

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 16389 -->
+<!-- EN-Revision: 16590 -->
 <!-- Reviewed: no -->
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     "@DOCBOOK_DTD@"
@@ -384,6 +384,16 @@
         <xi:include href="module_specs/Zend_ProgressBar.xml" />
     </chapter>
 
+    <chapter id="zend.queue">
+        <title>Zend_Queue</title>
+        <xi:include href="module_specs/Zend_Queue-Introduction.xml" />
+        <xi:include href="module_specs/Zend_Queue-Example.xml" />
+        <xi:include href="module_specs/Zend_Queue-Framework.xml" />
+        <xi:include href="module_specs/Zend_Queue-Adapters.xml" />
+        <xi:include href="module_specs/Zend_Queue-Custom.xml" />
+        <xi:include href="module_specs/Zend_Queue-Stomp.xml" />
+    </chapter>
+
     <chapter id="zend.reflection">
         <title>Zend_Reflection</title>
         <xi:include href="module_specs/Zend_Reflection-Introduction.xml" />
@@ -440,6 +450,7 @@
         <xi:include href="module_specs/Zend_Service_Amazon_Ec2-RegionsAndAvalibilityZones.xml" />
         <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Securitygroups.xml" />
         <xi:include href="module_specs/Zend_Service_Amazon_S3.xml" />
+        <xi:include href="module_specs/Zend_Service_Amazon_Sqs.xml" />
         <xi:include href="module_specs/Zend_Service_Audioscrobbler.xml" />
         <xi:include href="module_specs/Zend_Service_Delicious.xml" />
         <xi:include href="module_specs/Zend_Service_Flickr.xml" />

+ 45 - 0
documentation/manual/de/module_specs/Zend_Controller-Plugins-PutHandler.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16595 -->
+<!-- Reviewed: no -->
+<sect3 id="zend.controller.plugins.standard.puthandler">
+    <title>Zend_Controller_Plugin_PutHandler</title>
+
+    <para>
+        <classname>Zend_Controller_Plugin_PutHandler</classname> bietet ein Drop-In Plugin für die
+        Verwendung von PUT Request Bodies in Anfrage Parametern, so wie POST Anfrage Parameter. Er
+        betrachtet die Anfrage und, wenn diese PUT ist, wird parse_str verwendet um den rohen PUT
+        Body in ein Array von Parametern zu parsen welches dann bei der Anfrage gesetzt wird. z.B.,
+    </para>
+
+    <programlisting language="txt"><![CDATA[
+PUT /notes/5.xml HTTP/1.1
+
+title=Hallo&body=Welt
+]]></programlisting>
+
+    <para>
+        Um die 'title' und 'body' Parameter als reguläre Anfrage Parameter zu erhalten muss das
+        Plugin registriert werden:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$front = Zend_Controller_Front::getInstance();
+$front->registerPlugin(new Zend_Controller_Plugin_PutHandler());
+]]></programlisting>
+
+    <para>
+        Anschließend kann man auf die Parameter des PUT Bodies durch Ihren Namen zugreifen, von der
+        Anfrage im eigenen Controller aus:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+...
+public function putAction()
+{
+    $title = $this->getRequest()->getParam('title'); // $title = "Hallo"
+    $body = $this->getRequest()->getParam('body'); // $body = "Welt"
+}
+...
+]]></programlisting>
+
+</sect3>

+ 2 - 1
documentation/manual/de/module_specs/Zend_Controller-Plugins.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 16178 -->
+<!-- EN-Revision: 16595 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.controller.plugins" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Plugins</title>
@@ -229,6 +229,7 @@ $front->dispatch();
 
         <xi:include href="Zend_Controller-Plugins-ActionStack.xml" />
         <xi:include href="Zend_Controller-Plugins-ErrorHandler.xml" />
+        <xi:include href="Zend_Controller-Plugins-PutHandler.xml" />
     </sect2>
 </sect1>
 <!--

+ 171 - 0
documentation/manual/de/module_specs/Zend_Controller-Router-Route-Rest.xml

@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16595 -->
+<!-- Reviewed: no -->
+<sect3 id="zend.controller.router.routes.rest">
+    <title>Zend_Rest_Route</title>
+
+    <para>
+        The <classname>Zend_Rest</classname> component contains a RESTful route
+        for <classname>Zend_Controller_Router_Rewrite</classname>. This route
+        offers a standardized routing scheme that routes requests by translating
+        the <acronym>HTTP</acronym> method and the <acronym>URI</acronym>
+        to a module, controller, and action. The table below provides an overview
+        of how request methods and <acronym>URI</acronym>'s are routed.
+    </para>
+
+    <table frame="all">
+        <title>Zend_Rest_Route Behavior</title>
+
+        <tgroup cols='3' align='left' colsep='1' rowsep='1'>
+            <colspec colname='method' />
+            <colspec colname='URI' />
+            <colspec colname='route' />
+            <thead>
+                <row>
+                    <entry>Method</entry>
+                    <entry><acronym>URI</acronym></entry>
+                    <entry>Module_Controller::action</entry>
+                </row>
+            </thead>
+            <tbody>
+                <row>
+                    <entry>GET</entry>
+                    <entry><filename>/product/ratings/</filename></entry>
+                    <entry><methodname>Product_RatingsController::indexAction()</methodname></entry>
+                </row>
+                <row>
+                    <entry>GET</entry>
+                    <entry><filename>/product/ratings/:id</filename></entry>
+                    <entry><methodname>Product_RatingsController::getAction()</methodname></entry>
+                </row>
+                <row>
+                    <entry>POST</entry>
+                    <entry><filename>/product/ratings</filename></entry>
+                    <entry><methodname>Product_RatingsController::postAction()</methodname></entry>
+                </row>
+                <row>
+                    <entry>PUT</entry>
+                    <entry><filename>/product/ratings/:id</filename></entry>
+                    <entry><methodname>Product_RatingsController::putAction()</methodname></entry>
+                </row>
+                <row>
+                    <entry>DELETE</entry>
+                    <entry><filename>/product/ratings/:id</filename></entry>
+                    <entry>
+                        <methodname>Product_RatingsController::deleteAction()</methodname>
+                    </entry>
+                </row>
+                <row>
+                    <entry>POST</entry>
+                    <entry><filename>/product/ratings/:id?_method="PUT"</filename></entry>
+                    <entry><methodname>Product_RatingsController::putAction()</methodname></entry>
+                </row>
+                <row>
+                    <entry>POST</entry>
+                    <entry><filename>/product/ratings/:id?_method="DELETE"</filename></entry>
+                    <entry>
+                        <methodname>Product_RatingsController::deleteAction()</methodname>
+                    </entry>
+                </row>
+            </tbody>
+        </tgroup>
+    </table>
+
+    <para>
+        To enable <classname>Zend_Rest_Route</classname> for an entire
+        application, construct it with no config params and add it as the
+        default route on the front controller:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$front     = Zend_Controller_Front::getInstance();
+$restRoute = new Zend_Rest_Route($front);
+$front->getRouter()->addRoute('default', $restRoute);
+]]></programlisting>
+
+    <note>
+        <para>
+            If <classname>Zend_Rest_Route</classname> cannot match a valid
+            module, controller, or action, it will return false and the router
+            will attempt to match using the next route in the router.
+        </para>
+    </note>
+
+    <para>
+        To enable <classname>Zend_Rest_Route</classname> for specific modules,
+        construct it with an array of module names as the 3rd constructor
+        argument:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$front     = Zend_Controller_Front::getInstance();
+$restRoute = new Zend_Rest_Route($front, array(), array('product'));
+$front->getRouter()->addRoute('rest', $restRoute);
+]]></programlisting>
+
+    <para>
+        To enable <classname>Zend_Rest_Route</classname> for specific
+        controllers, add an array of controller names as the value of each
+        module array element.
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$front     = Zend_Controller_Front::getInstance();
+$restRoute = new Zend_Rest_Route($front, array(), array(
+    'product' => array('ratings')
+));
+$front->getRouter()->addRoute('rest', $restRoute);
+]]></programlisting>
+
+    <sect4 id="zend.rest.controller">
+        <title>Zend_Rest_Controller</title>
+
+        <para>
+            To help guide development of Controllers for use with
+            <classname>Zend_Rest_Route</classname>, extend your Controllers from
+            <classname>Zend_Rest_Controller</classname>.
+            <classname>Zend_Rest_Controller</classname> defines the 5 most-commonly
+            needed operations for RESTful resources in the form of abstract action
+            methods.
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis><methodname>indexAction()</methodname></emphasis> -
+                    Should retrieve an index of resources and assign it to view.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis><methodname>getAction()</methodname></emphasis> -
+                    Should retrieve a single resource identified by <acronym>URI</acronym>
+                    and assign it to view.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis><methodname>postAction()</methodname></emphasis> -
+                    Should accept a new single resource and persist its state.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis><methodname>putAction()</methodname></emphasis> -
+                    Should accept a single resource idenitifed by <acronym>URI</acronym>
+                    and persist its state.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis><methodname>deleteAction()</methodname></emphasis> -
+                    Should delete a single resource identified by <acronym>URI</acronym>.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+    </sect4>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 2 - 1
documentation/manual/de/module_specs/Zend_Controller-Router.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 16441 -->
+<!-- EN-Revision: 16595 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.controller.router" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Der Standard Router</title>
@@ -388,6 +388,7 @@ $router->setGlobalParam('lang', 'en');
         <xi:include href="Zend_Controller-Router-Route-Regex.xml" />
         <xi:include href="Zend_Controller-Router-Route-Hostname.xml" />
         <xi:include href="Zend_Controller-Router-Route-Chain.xml" />
+        <xi:include href="Zend_Controller-Router-Route-Rest.xml" />
     </sect2>
 
     <sect2 id="zend.controller.router.add-config">

+ 428 - 0
documentation/manual/de/module_specs/Zend_Queue-Adapters.xml

@@ -0,0 +1,428 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.adapters">
+    <title>Adapters</title>
+
+    <para>
+        <classname>Zend_Queue</classname> supports all queues implementing the
+        interface <classname>Zend_Queue_Adapter_AdapterInterface</classname>.
+        The following Message Queue services are supported:
+    </para>
+
+    <itemizedlist>
+        <listitem>
+            <para>
+                <ulink url="http://activemq.apache.org/">ApacheMQ</ulink>.
+            </para>
+        </listitem>
+
+        <listitem>
+            <para>
+                A database driven queue via <classname>Zend_Db</classname>.
+            </para>
+        </listitem>
+
+        <listitem>
+            <para>
+                A <ulink url="http://memcachedb.org/memcacheq/">MemcacheQ</ulink>
+                queue driven via <classname>Memcache</classname>.
+            </para>
+        </listitem>
+
+        <listitem>
+            <para>
+                A local array. Useful for unit testing.
+            </para>
+        </listitem>
+    </itemizedlist>
+
+    <note id="zend.queue.adapters.limitations">
+        <title>Limitations</title>
+
+        <para>
+            Message transaction handling is not supported.
+        </para>
+    </note>
+
+    <sect2 id="zend.queue.adapters.configuration">
+        <title>Specific Adapters - Configuration settings</title>
+
+        <para>
+            If a default setting is indicated then the parameter is optional.
+            If a default setting is not specified then the parameter is
+            required.
+        </para>
+
+        <sect3 id="zend.queue.adapters.configuration.Apachemq">
+            <title>ApacheMQ - Zend_Queue_Adapter_Apachemq</title>
+
+            <para>
+                Options here listed here are known requirements. Not all
+                messaging servers require username or password.
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                         <emphasis>$options['name'] = '/temp/queue1';</emphasis>
+                    </para>
+
+                    <para>
+                        This is the name of the queue that you wish to start
+                        using. (Required)
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
+                    </para>
+
+                    <para>
+                        <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
+                    </para>
+
+                    <para>
+                        You may set host to an IP address or a hostname.
+                    </para>
+
+                    <para>
+                        Default setting for host is '127.0.0.1'.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['port'] = 61613;</emphasis>
+                    </para>
+
+                    <para>Default setting for port is 61613.</para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                         <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
+                    </para>
+
+                    <para>
+                        Optional for some messaging servers. Read the manual
+                        for your messaging server.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
+                    </para>
+
+                    <para>
+                        Optional for some messaging servers. Read the manual
+                        for your messaging server.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['timeout_sec'] = 2;</emphasis>
+                    </para>
+
+                    <para>
+                        <emphasis>$options['driverOptions']['timeout_usec'] = 0;</emphasis>
+                    </para>
+
+                    <para>
+                        This is the amount of time that
+                        <classname>Zend_Queue_Adapter_Activemq</classname> will wait for
+                        read activity on a socket before returning no messages.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.configuration.Db">
+            <title>Db - Zend_Queue_Adapter_Db</title>
+
+            <para>
+                Driver options are checked for a few required options such
+                as <emphasis>type</emphasis>, <emphasis>host</emphasis>,
+                <emphasis>username</emphasis>, <emphasis>password</emphasis>,
+                and <emphasis>dbname</emphasis>. You may pass along
+                additional parameters for <methodname>Zend_DB::factory()</methodname> as parameters
+                in <varname>$options['driverOptions']</varname>. An example of an additional
+                option not listed here, but could be passed would be <emphasis>port</emphasis>.
+            </para>
+
+            <programlisting language="php"><![CDATA[
+$options = array(
+    'driverOptions' => array(
+        'host'      => 'db1.domain.tld',
+        'username'  => 'my_username',
+        'password'  => 'my_password',
+        'dbname'    => 'messaging',
+        'type'      => 'pdo_mysql',
+        'port'      => 3306, // optional parameter.
+    ),
+    'options' => array(
+        // use Zend_Db_Select for update, not all databases can support this
+        // feature.
+        Zend_Db_Select::FOR_UPDATE => true
+    )
+);
+
+// Create a database queue.
+$queue = Zend_Queue::factory('Db', $options);
+]]></programlisting>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                         <emphasis>$options['name'] = 'queue1';</emphasis>
+                    </para>
+
+                    <para>
+                        This is the name of the queue that you wish to start using. (Required)
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['type'] = 'Pdo';</emphasis>
+                    </para>
+
+                    <para>
+                        <emphasis>type</emphasis> is the adapter you wish to have
+                        <methodname>Zend_Db::factory()</methodname> use. This is
+                        the first parameter for the
+                        <methodname>Zend_Db::factory()</methodname> class
+                        method call.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
+                    </para>
+
+                    <para>
+                        <emphasis>$options['driverOptions']['host'] = '127.0.0.1';</emphasis>
+                    </para>
+
+                    <para>You may set host to an IP address or a hostname.</para>
+
+                    <para>Default setting for host is '127.0.0.1'.</para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                         <emphasis>$options['driverOptions']['username'] = 'username';</emphasis>
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['password'] = 'password';</emphasis>
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['dbname'] = 'dbname';</emphasis>
+                    </para>
+
+                    <para>
+                        The database name that you have created the required tables for.
+                        See the notes section below.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.configuration.memcacheq">
+            <title>MemcacheQ - Zend_Queue_Adapter_Memcacheq</title>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                         <emphasis>$options['name'] = 'queue1';</emphasis>
+                    </para>
+
+                    <para>
+                        This is the name of the queue that you wish to start using. (Required)
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                         <emphasis>$options['driverOptions']['host'] = 'host.domain.tld';</emphasis>
+                    </para>
+
+                    <para>
+                         <emphasis>$options['driverOptions']['host'] = '127.0.0.1;'</emphasis>
+                    </para>
+
+                    <para>You may set host to an IP address or a hostname.</para>
+
+                    <para>Default setting for host is '127.0.0.1'.</para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <emphasis>$options['driverOptions']['port'] = 22201;</emphasis>
+                    </para>
+
+                    <para>The default setting for port is 22201.</para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.configuration.array">
+            <title>Array - Zend_Queue_Adapter_Array</title>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                         <emphasis>$options['name'] = 'queue1';</emphasis>
+                    </para>
+
+                    <para>
+                        This is the name of the queue that you wish to start using. (Required)
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+    </sect2>
+
+    <sect2 id="zend.queue.adapters.notes">
+        <title>Notes for Specific Adapters</title>
+
+        <para>The following adapters have notes:</para>
+
+        <sect3 id="zend.queue.adapters.notes.activemq">
+            <title>ActiveMQ</title>
+
+            <para>
+                Visibility duration for
+                <classname>Zend_Queue_Adapter_ActiveMQ</classname> is not
+                available.
+            </para>
+
+            <para>
+                While Apache's ActiveMQ will support multiple subscriptions, the
+                <classname>Zend_Queue</classname> does not. You must create a
+                new <classname>Zend_Queue</classname> object for each individual
+                subscription.
+            </para>
+
+            <para>
+                ActiveMQ queue/topic names must begin with one of:
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <filename>/queue/</filename>
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <filename>/topic/</filename>
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <filename>/temp-queue/</filename>
+                    </para>
+                </listitem>
+                <listitem>
+                    <para>
+                        <filename>/temp-topic/</filename>
+                    </para>
+                </listitem>
+            </itemizedlist>
+
+            <para>
+                For example: <filename>/queue/testing</filename>
+            </para>
+
+            <para>
+                The following functions are not supported:
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                         <methodname>create()</methodname> - create queue.
+                         Calling this function will throw an exception.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <methodname>delete()</methodname> - delete queue.
+                        Calling this function will throw an exception.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <methodname>getQueues()</methodname> - list queues.
+                        Calling this function will throw an exception.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.notes.zend_db">
+            <title>Zend_Db</title>
+
+            <para>
+                The database <emphasis>CREATE TABLE ( ... )</emphasis> <acronym>SQL</acronym>
+                statement can be found in <filename>Zend/Queue/Adapter/Db/queue.sql</filename>.
+            </para>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.notes.memcacheQ">
+            <title>MemcacheQ</title>
+
+            <para>
+                Memcache can be downloaded from <ulink
+                    url="http://www.danga.com/memcached/">http://www.danga.com/memcached/</ulink>.
+            </para>
+
+            <para>
+                MemcacheQ can be downloaded from <ulink
+                    url="http://memcachedb.org/memcacheq/">http://memcachedb.org/memcacheq/</ulink>.
+            </para>
+
+            <itemizedlist>
+                <listitem>
+                    <para>
+                        <methodname>deleteMessage()</methodname> - Messages are deleted upon
+                        reception from the queue. Calling this function would
+                        have no effect. Calling this function will throw an
+                        error.
+                    </para>
+                </listitem>
+
+                <listitem>
+                    <para>
+                        <methodname>count()</methodname> or <methodname>count($adapter)</methodname>
+                        - MemcacheQ does not support a method for counting the number of items in
+                        a queue. Calling this function will throw an error.
+                    </para>
+                </listitem>
+            </itemizedlist>
+        </sect3>
+
+        <sect3 id="zend.queue.adapters.notes.array">
+            <title>Array (local)</title>
+
+            <para>
+                The Array queue is a <acronym>PHP</acronym> <methodname>array()</methodname>
+                in local memory. The <classname>Zend_Queue_Adapter_Array</classname> is good for
+                unit testing.
+            </para>
+        </sect3>
+    </sect2>
+</sect1>

+ 136 - 0
documentation/manual/de/module_specs/Zend_Queue-Custom.xml

@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.custom">
+    <title>Customizing Zend_Queue</title>
+
+    <sect2 id="zend.queue.custom.adapter">
+        <title>Creating your own adapter</title>
+
+        <para>
+            <classname>Zend_Queue</classname> will accept any adapter that
+            implements
+            <classname>Zend_Queue_Adapter_AdapterAbstract</classname>. You can
+            create your own adapter by extending one of the existing adapters,
+            or the abstract class
+            <classname>Zend_Queue_Adapter_AdapterAbstract</classname>. I
+            suggest reviewing <classname>Zend_Queue_Adapter_Array</classname> as
+            this adapter is the easiest to conceptualize.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+class Custom_DbForUpdate extends Zend_Queue_Adapter_Db
+{
+    /**
+     * @see code in tests/Zend/Queue/Custom/DbForUpdate.php
+     *
+     * Custom_DbForUpdate uses the SELECT ... FOR UPDATE to find it's rows.
+     * this is more likely to produce the wanted rows than the existing code.
+     *
+     * However, not all databases have SELECT ... FOR UPDATE as a feature.
+     *
+     * Note: this was later converted to be an option for Zend_Queue_Adapter_Db
+     *
+     * This code still serves as a good example.
+     */
+}
+
+$options = array(
+    'name'          => 'queue1',
+    'driverOptions' => array(
+        'host'      => '127.0.0.1',
+        'port'      => '3306',
+        'username'  => 'queue',
+        'password'  => 'queue',
+        'dbname'    => 'queue',
+        'type'      => 'pdo_mysql'
+    )
+);
+
+$adapter = new Custom_DbForUpdate($options);
+$queue = Zend_Queue($adapter, $options);
+]]></programlisting>
+
+        <para>
+            You can also change the adapter on the fly as well.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$adapter = new MyCustom_Adapter($options);
+$queue   = Zend_Queue($options);
+$queue->setAdapter($adapter);
+echo "Adapter: ", get_class($queue->getAdapter()), "\n";
+]]></programlisting>
+
+        <para>or</para>
+
+        <programlisting language="php"><![CDATA[
+$options = array(
+    'name'           => 'queue1',
+    'namespace'      => 'Custom',
+    'driverOptions'  => array(
+        'host'       => '127.0.0.1',
+        'port'       => '3306',
+        'username'   => 'queue',
+        'password'   => 'queue',
+        'dbname'     => 'queue',
+        'type'       => 'pdo_mysql'
+    )
+);
+$queue = Zend_Queue('DbForUpdate', $config); // loads Custom_DbForUpdate
+]]></programlisting>
+    </sect2>
+
+    <sect2 id="zend.queue.custom.message">
+        <title>Creating your own message class</title>
+
+        <para>
+            <classname>Zend_Queue</classname> will also accept your own message class.
+            Our variables start with an underscore. For example:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+class Zend_Queue_Message
+{
+    protected $_data = array();
+}
+]]></programlisting>
+
+        <para>
+            You can extend the existing messaging class. See the example code in
+            <filename>tests/Zend/Queue/Custom/Message.php</filename>.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.queue.custom-iterator">
+        <title>Creating your own message iterator class</title>
+
+        <para>
+            <classname>Zend_Queue</classname> will also accept your own message
+            iterator class. The message iterator class is used to return
+            messages from
+            <methodname>Zend_Queue_Adapter_Abstract::recieve()</methodname>.
+            <methodname>Zend_Queue_Abstract::receive()</methodname> should always
+            return a container class like
+            <classname>Zend_Queue_Message_Iterator</classname>, even if there is
+            only one message.
+        </para>
+
+        <para>
+            See the example filename in
+            <filename>tests/Zend/Queue/Custom/Messages.php</filename>.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.queue.custom.queue">
+        <title>Creating your own queue class </title>
+
+        <para>
+            <classname>Zend_Queue</classname> can also be overloaded easily.
+        </para>
+
+        <para>
+            See the example filename in <filename>tests/Zend/Queue/Custom/Queue.php</filename>.
+        </para>
+    </sect2>
+</sect1>

+ 52 - 0
documentation/manual/de/module_specs/Zend_Queue-Example.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.example">
+    <title>Beispiel der Verwendung</title>
+
+    <para>
+        Das beiliegende Beispiel von <classname>Zend_Queue</classname> zeigt eine Vielzahl von
+        Features, inklusive Erstellung der Queue, Empfangen der Queue, Empfangen von Nachrichten,
+        Löschen von Nachrichten und Senden von Nachrichten.
+    </para>
+
+    <programlisting language="php"><![CDATA[
+// Für Konfigurations Optionen siehe
+// @see Zend_Queue_Adapater::__construct()
+$options = array(
+    'name' => 'queue1',
+);
+
+// Erstellung einer Array Queue
+$queue = Zend_Queue('Array', $options);
+
+// Eine Liste von Queues erhalten
+foreach ($queue->getQueues() as $name) {
+    echo $name, "\n";
+}
+
+// eine neue Liste erstellen
+$queue2 = $queue->create('queue2');
+
+// Die Anzahl von Nachrichten in einer Queue erhalten
+// (unterstützt das Countable Interface von SPL)
+echo count($queue);
+
+// Bis zu 5 Nachrichten von der Queue erhalten
+$messages = $queue->receive(5);
+
+foreach ($messages as $i => $message) {
+    echo $message->body, "\n";
+
+    // Wir haben die Nachrichten bearbeitet;
+    // jetzt löschen wir Sie von der Queue
+    $queue->deleteMessage($message);
+}
+
+// Eine Nachricht zur aktuell aktiven Queue senden
+$queue->send('Meine Test Nachricht');
+
+// Eine Queue die wir erstellt haben löschen inklusive aller Ihrer Nachrichten
+$queue->delete('queue2');
+]]></programlisting>
+</sect1>

+ 176 - 0
documentation/manual/de/module_specs/Zend_Queue-Framework.xml

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.framework">
+    <title>Framework</title>
+
+    <para>
+        The <classname>Zend_Queue</classname> is a proxy that hides the details
+        of the queue services. The queue services are represented by
+        <classname>Zend_Queue_Adapter_&lt;service&gt;</classname>. For example,
+        <classname>Zend_Queue_Adapter_Db</classname> is a queue that will use
+        database tables to store and retrieve messages.
+    </para>
+
+    <para>
+        Below is an example for using database tables for a queuing system:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$options = array(
+    'name'          => 'queue1',
+    'driverOptions' => array(
+        'host'      => '127.0.0.1',
+        'port'      => '3306',
+        'username'  => 'queue',
+        'password'  => 'queue',
+        'dbname'    => 'queue',
+        'type'      => 'pdo_mysql'
+    )
+);
+
+// Create a database queue.
+// Zend_Queue will prepend Zend_Queue_Adapter_ to 'Db' for the class name.
+$queue = Zend_Queue('Db', $options);
+]]></programlisting>
+
+    <para>
+        The <classname>Zend_Queue</classname> constructor will create a
+        <classname>Zend_Queue_Adapter_Db</classname> and initialize the adapter
+        with the configuration settings.
+    </para>
+
+    <para>
+        The accepted configuration settings for each adapter are provided
+        in the <ulink url="zend.queue.adapters">adapter notes</ulink>.
+    </para>
+
+    <para>
+        <classname>Zend_Queue</classname> returns messages using the class
+        <classname>Zend_Queue_Message_Iterator</classname>, which is an
+        implementation of <acronym>SPL</acronym> <classname>Iterator</classname> and
+        <classname>Countable</classname>.
+        <classname>Zend_Queue_Message_Iterator</classname> contains an array of
+        <classname>Zend_Queue_Message</classname> objects.
+    </para>
+
+    <programlisting language="php"><![CDATA[
+$messages = $queue->receive(5);
+foreach ($messages as $i => $message) {
+    echo "$i) Message => ", $message->body, "\n";
+}
+]]></programlisting>
+
+    <para>
+        Any exceptions thrown are of class
+        <classname>Zend_Queue_Exception</classname>.
+    </para>
+
+    <sect2 id="zend.queue.framework.basics">
+        <title>Introduction</title>
+
+        <para>
+            <classname>Zend_Queue</classname> is a proxy class that represents
+            an adapter.
+        </para>
+
+        <para>
+            The <methodname>send()</methodname>,
+            <methodname>count($queue)</methodname>, and
+            <methodname>receive()</methodname> methods are employed by each
+            adapter to interact with queues.
+        </para>
+
+        <para>
+            The <methodname>createQueue()</methodname>,
+            <methodname>deleteQueue()</methodname> methods are used to manage
+            queues.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.queue.framework.support">
+        <title>Commonality among adapters</title>
+
+        <para>
+            The queue services supported by <classname>Zend_Queue</classname> do
+            not all support the same functions. For example,
+            <classname>Zend_Queue_Adapter_Array</classname>,
+            <classname>Zend_Queue_Adapter_Db</classname>, support all functions,
+            while <classname>Zend_Queue_Adapter_Activemq</classname> does not
+            support queue listing, queue deletion, or counting of messages.
+        </para>
+
+        <para>
+            You can determine what functions are supported by using
+            <methodname>Zend_Queue::isSupported()</methodname> or
+            <methodname>Zend_Queue::getCapabilities()</methodname>.
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <methodname>create()</methodname> - create a queue
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>delete()</methodname> - delete a queue
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>send()</methodname> - send a message
+                </para>
+
+                <para>
+                    <methodname>send()</methodname> is not available in all adapters; the
+                    <classname>Zend_Queue_Adapter_Null</classname> does not
+                    support <methodname>send()</methodname>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>receive()</methodname> - receive messages
+                </para>
+
+                <para>
+                    <methodname>receive()</methodname> is not available in all adapters;
+                    the <classname>Zend_Queue_Adapter_Null</classname> does not
+                    support <methodname>receive()</methodname>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>deleteMessage()</methodname> - delete a message
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>count()</methodname> - count the number of messages in a queue
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <methodname>isExists()</methodname> - checks the existence of a queue
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            <methodname>receive()</methodname> methods are employed by each
+            adapter to interact with queues.
+        </para>
+
+        <para>
+            The <methodname>createQueue()</methodname> and
+            <methodname>deleteQueue()</methodname> methods are used to manage
+            queues.
+        </para>
+    </sect2>
+</sect1>

+ 59 - 0
documentation/manual/de/module_specs/Zend_Queue-Introduction.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.introduction">
+    <title>Einführung</title>
+
+    <para>
+        <classname>Zend_Queue</classname> bietet Factory Funktionen ob spezielle Queue Client
+        Objekte zu erstellen.
+    </para>
+
+    <para>
+        Eine Message Queue ist eine Methode für entferntes Bearbeiten. Zum Beispiel könnte eine Job
+        Broker Anwendung mehrere Anwendungen für Jobs akzeptieren und das von einer Vielzahl von
+        Quellen.
+    </para>
+
+    <para>
+        You could create a queue "<filename>/queue/applications</filename>" that
+        would have a sender and a receiver. The sender would be any available
+        source that could connect to your message service or indirectly to an
+        application (web) that could connect to the message service.
+    </para>
+
+    <para>
+        The sender sends a message to the queue:
+    </para>
+
+    <programlisting language="xml"><![CDATA[
+<resume>
+    <name>John Smith</name>
+    <location>
+        <city>San Francisco</city>
+        <state>California</state>
+        <zip>00001</zip>
+    </location>
+    <skills>
+        <programming>PHP</programming>
+        <programming>Perl</programming>
+    </skills>
+</resume>
+]]></programlisting>
+
+    <para>
+        The recipient or consumer of the queue would pick up the message and
+        process the resume.
+    </para>
+
+    <para>
+        There are many messaging patterns that can be applied to queues to abstract
+        the flow of control from the code and provide metrics, transformations,
+        and monitoring of messages queues. A good book on messaging patterns is
+        <ulink
+            url="http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Addison-Wesley/dp/0321200683">Enterprise
+            Integration Patterns: Designing, Building, and Deploying Messaging Solutions
+            (Addison-Wesley Signature Series)</ulink>
+        (ISBN-10 0321127420; ISBN-13 978-0321127426).
+    </para>
+</sect1>

+ 48 - 0
documentation/manual/de/module_specs/Zend_Queue-Stomp.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.queue.stomp">
+    <title>Stomp</title>
+
+    <para>
+        <classname>Zend_Queue_Stomp</classname> bietet einen Basis Client um mit
+        <ulink url="http://stomp.codehaus.org/">Stomp</ulink> kompatiblen Servern zu kommunizieren.
+        Einige Server, so wie ApacheMQ oder RabbitMQ erlauben es mithilfe von anderen Methoden zu
+        kommunizieren, wie <acronym>HTTP</acronym> und <acronym>XMPP</acronym>.
+    </para>
+
+    <para>
+        Das Stomp Protokoll bietet <ulink
+            url="http://stomp.codehaus.org/StompConnect">StompConnect</ulink> an welches jeden
+        <ulink url="http://java.sun.com/products/jms/">Java Message Service (JMS)</ulink> Provider
+        unterstützt. Stomp wird von
+        <ulink url="http://activemq.apache.org/">Apache ActiveMQ</ulink>,
+        <ulink url="http://www.rabbitmq.com/">RabbitMQ</ulink>,
+        <ulink url="http://stompserver.rubyforge.org/">stompserver</ulink>, und
+        <ulink url="http://www.germane-software.com/software/Java/Gozirra/">Gozirra</ulink>
+        unterstützt.
+    </para>
+
+    <sect2 id="zend.queue.adapters-configuration.stomp">
+        <title>Stomp - Unterstützende Klassen</title>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <classname>Zend_Queue_Stomp_Frame</classname>. Diese Klasse bietet die
+                    grundsätzlichen Funktionalitäten für die Manipulation eines Stomp Frames.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    <classname>Zend_Queue_Stomp_Client</classname>. Diese Klasse bietet die
+                    grundsätzlichen Funktionen um <classname>Zend_Queue_Stomp_Frame</classname>s
+                    von und zu einem Stomp kompatiblen Server zu senden
+                    (<methodname>send()</methodname>) und zu empfangen
+                    (<methodname>receive()</methodname>).
+                </para>
+            </listitem>
+        </itemizedlist>
+    </sect2>
+</sect1>

+ 309 - 0
documentation/manual/de/module_specs/Zend_Service_Amazon_Sqs.xml

@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 16590 -->
+<!-- Reviewed: no -->
+<sect1 id="zend.service.amazon.sqs">
+    <title>Zend_Service_Amazon_Sqs</title>
+
+    <sect2 id="zend.service.amazon.sqs.introduction">
+        <title>Introduction</title>
+
+        <para>
+            <ulink url="http://aws.amazon.com/sqs/">Amazon Simple Queue Service
+                (Amazon SQS)</ulink> offers a reliable, highly scalable, hosted
+            queue for storing messages as they travel between computers. By
+            using Amazon SQS, developers can simply move data between
+            distributed components of their applications that perform different
+            tasks, without losing messages or requiring each component to be
+            always available. Amazon SQS makes it easy to build an automated
+            workflow, working in close conjunction with the Amazon Elastic
+            Compute Cloud (Amazon EC2) and the other AWS infrastructure web
+            services.
+        </para>
+
+        <para>
+            Amazon SQS works by exposing Amazon's web-scale messaging
+            infrastructure as a web service. Any computer on the Internet can
+            add or read messages without any installed software or special
+            firewall configurations. Components of applications using Amazon SQS
+            can run independently, and do not need to be on the same network,
+            developed with the same technologies, or running at the same time.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.service.amazon.sqs.registering">
+        <title>Registering with Amazon SQS</title>
+
+        <para>
+            Before you can get started with
+            <classname>Zend_Service_Amazon_Sqs</classname>, you must first
+            register for an account. Please see the <ulink
+                url="http://aws.amazon.com/sqs/faqs/">SQS FAQ</ulink> page on
+            the Amazon website for more information.
+        </para>
+
+        <para>
+            After registering, you will receive an application key and a secret key.
+            You will need both to access the SQS service.
+        </para>
+    </sect2>
+
+    <sect2 id="zend.service.amazon.sqs.apiDocumentation">
+        <title>API Documentation</title>
+
+        <para>
+            The <classname>Zend_Service_Amazon_Sqs</classname> class provides
+            the PHP wrapper to the Amazon SQS REST interface. Please consult the
+            <ulink
+                url="http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=31">Amazon
+                SQS documentation</ulink> for detailed description of the
+            service. You will need to be familiar with basic concepts in order
+            to use this service.
+        </para>
+
+    </sect2>
+
+    <sect2 id="zend.service.amazon.sqs.features">
+        <title>Features</title>
+
+        <para>
+            <classname>Zend_Service_Amazon_Sqs</classname> provides the
+            following functionality:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    A single point for configuring your amazon.sqs
+                    authentication credentials that can be used across the
+                    amazon.sqs namespaces.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    A proxy object that is more convenient to use than an HTTP
+                    client alone, mostly removing the need to manually construct
+                    HTTP POST requests to access the REST service.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    A response wrapper that parses each response body and throws
+                    an exception if an error occurred, alleviating the need to
+                    repeatedly check the success of many commands.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    Additional convenience methods for some of the more common
+                    operations.
+                </para>
+            </listitem>
+        </itemizedlist>
+    </sect2>
+
+    <sect2 id="zend.service.amazon.sqs.storing-your-first">
+        <title>Getting Started</title>
+
+        <para>
+            Once you have registered with Amazon SQS, you're ready to create
+            your queue and store some messages on SQS. Each queue can contain
+            unlimited amount of messages, identified by name.
+        </para>
+
+        <para>
+            The following example demonstrates creating a queue, storing and
+            retrieving messages.
+        </para>
+
+        <example id="zend.service.amazon.sqs.storing-your-first.example">
+            <title>Zend_Service_Amazon_Sqs Usage Example</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>
+            Since the <classname>Zend_Service_Amazon_Sqs</classname> service
+            requires authentication, you should pass your credentials (AWS key
+            and secret key) to the constructor.  If you only use one account,
+            you can set default credentials for the service:
+        </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>Queue operations</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>