<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.windowsazure.storage.queue">
    <title>Zend_Service_WindowsAzure_Storage_Queue</title>

    <para>
        Das Queue Service speichert Nachrichten die von jedem Client gelesen werden können welche
        auf den Speicher Account Zugriff haben.
    </para>

    <para>
        Eine Queue kann eine unbegrenzte Anzahl an Nachrichten enthalten, jede von Ihnen bis zu 8KB
        groß. Nachrichten werden generell am Ende der Queue hinzugefügt und vom Anfang der Queue
        empfangen, auch wenn das First In / First Out Verhalten (<acronym>FIFO</acronym>) nicht
        garantiert ist. Wenn man Nachrichten speichern muss die größer als 8KB sind, können die
        Daten der Nachricht als Queue gespeichert werden oder in einer Tabelle und anschließend eine
        Referenz zu den Daten als Nachricht in der Queue.
    </para>

    <para>
        Der Queue Speicher wird von Windows Azure als <acronym>REST</acronym> <acronym>API</acronym>
        angeboten welche von der <classname>Zend_Service_WindowsAzure_Storage_Queue</classname>
        Klasse umhüllt wird um ein natives <acronym>PHP</acronym> Interface zum Speicher Account zu
        bieten.
    </para>

    <sect2 id="zend.service.windowsazure.storage.queue.api">
        <title>API Beispiele</title>

        <para>
            Dieses Thema listet einige Beispiele der Verwendung der
            <classname>Zend_Service_WindowsAzure_Storage_Queue</classname> Klasse auf. Andere
            Features sind im Download Paket vorhanden, sowie eine detailierte <acronym>API</acronym>
            Dokumentation dieser Features.
        </para>

        <sect3 id="zend.service.windowsazure.storage.queue.api.create-queue">
            <title>Erstellung einer Queue</title>

            <para>
                Bei Verwendung des folgenden Codes kann eine Queue auf dem Development Speicher
                erstellt werden.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.create-queue.example">
                <title>Erstellung einer Queue</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
$result = $storageClient->createQueue('testqueue');

echo 'Der Name der Queue ist: ' . $result->Name;
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.queue.api.delete-queue">
            <title>Löschen einer Queue</title>

            <para>
                Bei Verwendung des folgenden Codes kann eine Queue vom Development Speicher entfernt
                werden.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.delete-queue.example">
                <title>Löschen einer Queue</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();
$storageClient->deleteQueue('testqueue');
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.queue.api.storing-queue">
            <title>Hinzufügen einer Nachricht zu einer Queue</title>

            <para>
                Bei Verwendung des folgenden Codes kann eine Nachricht zu einer Queue im
                Development Speicher hinzugefügt werden. Es ist zu beachten das die Queue hierfür
                bereits erstellt worden sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.storing-queue.example">
                <title>Hinzufügen einer Nachricht zu einer Queue</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();

// 3600 = Lebenszeit der Nachricht,
// wenn nicht angegeben ist der Standardwert 7 Tage
$storageClient->putMessage('testqueue', 'Das ist eine Testnachricht', 3600);
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.queue.api.read-queue">
            <title>Lesen einer Nachricht von einer Queue</title>

            <para>
                Bei Verwendung des folgenden Codes kann eine Nachricht von einer Queue im
                Development Speicher gelesen werden. Es ist zu beachten das die Queue und die
                Nachricht hierfür bereits erstellt worden sein muss.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.read-queue.example">
                <title>Lesen einer Nachricht von einer Queue</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();

// 10 Nachrichten auf einmal empfangen
$messages = $storageClient->getMessages('testqueue', 10);

foreach ($messages as $message) {
    echo $message->MessageText . "\r\n";
}
]]></programlisting>
            </example>

            <para>
                Die Nachrichten welche mit <methodname>getMessages()</methodname> gelesen werden,
                werden in der Queue für 30 Sekunden unsichtbar, und danach werden die Nachrichten
                in der Queue wieder erscheinen. Um eine Nachricht als bearbeitet zu markieren und
                Sie von der Queue zu entfernen, kann die Methode
                <methodname>deleteMessage()</methodname> verwendet werden.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.read-queue.processexample">
                <title>Eine Nachricht als bearbeitet markieren</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();

// 10 Nachrichten auf einmal empfangen
$messages = $storageClient->getMessages('testqueue', 10);

foreach ($messages as $message) {
    echo $message . "\r\n";

    // Die Nachricht als bearbeitet markieren
    $storageClient->deleteMessage('testqueue', $message);
}
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.windowsazure.storage.queue.api.peek-queue">
            <title>Prüfen ob es Nachrichten in der Queue gibt</title>

            <para>
                Bei Verwendung des folgenden Codes kann eine Queue auf neue Nachrichten geprüft
                werden. Es ist zu beachten das die Queue und die Nachricht  hierfür bereits erstellt
                worden sein müssen.
            </para>

            <example id="zend.service.windowsazure.storage.queue.api.peek-queue.example">
                <title>Prüfen ob es Nachrichten in einer Queue gibt</title>

                <programlisting language="php"><![CDATA[
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue();

// 10 Nachrichten auf einmal empfangen
$messages = $storageClient->peekMessages('testqueue', 10);

foreach ($messages as $message) {
    echo $message->MessageText . "\r\n";
}
]]></programlisting>
            </example>

            <para>
                Es ist zu beachten das Nachrichten welche mit Hilfe von
                <methodname>peekMessages()</methodname> gelesen werden in der Queue nicht
                unsichtbar, und durch Verwendung der Methode
                <methodname>deleteMessage()</methodname> auch nicht als bearbeitet markiert werden
                können. Um das zu tun sollte stattdessen <methodname>getMessages()</methodname>
                verwendet werden.
            </para>
        </sect3>
    </sect2>
</sect1>
