Das Queue Service speichert Nachrichten die von jedem Client gelesen werden können welche auf den Speicher Account Zugriff haben.
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 (FIFO) 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.
Der Queue Speicher wird von Windows Azure als REST API
angeboten welche von der Zend_Service_WindowsAzure_Storage_Queue
Klasse umhüllt wird um ein natives PHP Interface zum Speicher Account zu
bieten.
Dieses Thema listet einige Beispiele der Verwendung der
Zend_Service_WindowsAzure_Storage_Queue
Klasse auf. Andere
Features sind im Download Paket vorhanden, sowie eine detailierte API
Dokumentation dieser Features.
Bei Verwendung des folgenden Codes kann eine Queue auf dem Development Speicher erstellt werden.
Beispiel 844. Erstellung einer Queue
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue(); $result = $storageClient->createQueue('testqueue'); echo 'Der Name der Queue ist: ' . $result->Name;
Bei Verwendung des folgenden Codes kann eine Queue vom Development Speicher entfernt werden.
Beispiel 845. Löschen einer Queue
$storageClient = new Zend_Service_WindowsAzure_Storage_Queue(); $storageClient->deleteQueue('testqueue');
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.
Beispiel 846. Hinzufügen einer Nachricht zu einer Queue
$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);
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.
Beispiel 847. Lesen einer Nachricht von einer Queue
$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"; }
Die Nachrichten welche mit getMessages()
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
deleteMessage()
verwendet werden.
Beispiel 848. Eine Nachricht als bearbeitet markieren
$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); }
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.
Beispiel 849. Prüfen ob es Nachrichten in einer Queue gibt
$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"; }
Es ist zu beachten das Nachrichten welche mit Hilfe von
peekMessages()
gelesen werden in der Queue nicht
unsichtbar, und durch Verwendung der Methode
deleteMessage()
auch nicht als bearbeitet markiert werden
können. Um das zu tun sollte stattdessen getMessages()
verwendet werden.