Nachrichten abrufen
Der Get Messages
-Vorgang ruft eine oder mehrere Nachrichten ausgehend vom Anfang der Warteschlange ab.
Anforderung
Die Get Messages
-Anforderung kann wie folgt erstellt werden. Es wird empfohlen, HTTPS zu verwenden. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos und durch myqueue
den Namen Ihrer Warteschlange:
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
GET |
https://myaccount.queue.core.windows.net/myqueue/messages |
HTTP/1.1 |
Emulierte Speicherdienstanforderung
Wenn Sie eine Anforderung an den emulierten Speicherdienst stellen, geben Sie den Emulatorhostnamen und den Azure Queue Storage-Port als 127.0.0.1:10001
an, gefolgt vom namen des emulierten Speicherkontos:
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
GET |
http://127.0.0.1:10001/devstoreaccount1/myqueue/messages |
HTTP/1.1 |
Weitere Informationen finden Sie unter Verwenden des Azurite-Emulators für lokale Azure Storage-Entwicklung.
URI-Parameter
Im Anforderungs-URI können die folgenden zusätzlichen Parameter angegeben werden.
Parameter | BESCHREIBUNG |
---|---|
numofmessages |
Optional. Ein ganzzahliger Wert ungleich 0 (null), der die Anzahl der Nachrichten angibt, die aus der Warteschlange abgerufen werden sollen; der maximale Wert beträgt 32. Wenn weniger Nachrichten sichtbar sind, werden die sichtbaren Nachrichten zurückgegeben. Standardmäßig wird mit diesem Vorgang eine einzige Nachricht aus der Warteschlange abgerufen. |
visibilitytimeout |
Optional. Gibt den neuen Timeoutwert für die Sichtbarkeit in Sekunden relativ zur Serverzeit an. Der Standardwert ist 30 Sekunden. Ein angegebener Wert muss größer oder gleich 1 Sekunde sein und darf bei REST-Protokollversionen, die älter als 18.08.2011 sind, nicht größer als 7 Tage oder größer als 2 Stunden sein. Das Sichtbarkeitstimeout einer Nachricht kann auf einen Wert festgelegt werden, der später als die Ablaufzeit ist. |
timeout |
Optional. Der timeout -Parameter wird in Sekunden angegeben. Weitere Informationen finden Sie unter Festlegen von Timeouts für Azure Queue Storage-Vorgänge. |
Anforderungsheader
In der folgenden Tabelle werden erforderliche und optionale Anforderungsheader beschrieben.
Anforderungsheader | BESCHREIBUNG |
---|---|
Authorization |
Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
Date oder x-ms-date |
Erforderlich. Gibt die koordinierte Weltzeit (Coordinated Universal Time, UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
x-ms-version |
Optional. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste. |
x-ms-client-request-id |
Optional. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Zeichenlimit von 1 Kibibyte (KiB) bereit, der in den Protokollen aufgezeichnet wird, wenn die Protokollierung konfiguriert ist. Es wird dringend empfohlen, diesen Header zu verwenden, um clientseitige Aktivitäten mit Anforderungen zu korrelieren, die der Server empfängt. Weitere Informationen finden Sie unter Überwachen von Azure Queue Storage. |
Anforderungstext
Keine.
Antwort
Die Antwort enthält den HTTP-Statuscode und einen Satz von Antwortheadern.
Statuscode
Bei einem erfolgreichen Vorgang wird der Statuscode 200 (OK) zurückgegeben.
Weitere Informationen zu status Codes finden Sie unter Status- und Fehlercodes.
Antwortheader
Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann außerdem weitere HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.
Antwortheader | BESCHREIBUNG |
---|---|
x-ms-request-id |
Identifiziert eindeutig die Anforderung, die gestellt wurde, und kann zur Problembehandlung für die Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung für API-Vorgänge. |
x-ms-version |
Gibt die Azure Queue Storage-Version an, die zum Ausführen der Anforderung verwendet wurde. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher ausgeführt werden. |
Date |
Ein UTC-Datums-/Uhrzeitwert, der vom Dienst generiert wird, der den Zeitpunkt angibt, zu dem die Antwort initiiert wurde. |
x-ms-client-request-id |
Kann zur Problembehandlung von Anforderungen und entsprechenden Antworten verwendet werden. Der Wert dieses Headers ist gleich dem Wert des x-ms-client-request-id Headers, wenn er in der Anforderung vorhanden ist und der Wert nicht mehr als 1.024 sichtbare ASCII-Zeichen enthält. Wenn der x-ms-client-request-id Header in der Anforderung nicht vorhanden ist, ist er in der Antwort nicht vorhanden. |
Antworttext
Das Antwort-XML für den Get Messages
-Vorgang wird im folgenden Format zurückgegeben.
Das MessageID
-Element ist ein GUID-Wert, der die Nachricht in der Warteschlange identifiziert. Dieser Wert wird der Nachricht von Azure Queue Storage zugewiesen und ist für den Client undurchsichtig. Sie können den Wert zusammen mit dem Wert des PopReceipt
Elements verwenden, um eine Nachricht aus der Warteschlange zu löschen, nachdem Sie sie mithilfe des Get Messages
Vorgangs abgerufen haben. Der Wert von PopReceipt
ist auch für den Client undurchsichtig. Der einzige Zweck besteht darin, sicherzustellen, dass eine Nachricht mit dem Vorgang Nachricht löschen gelöscht werden kann.
Die Elemente InsertionTime
, ExpirationTime
und TimeNextVisible
werden als UTC-Werte dargestellt und sind entsprechend der Beschreibung in RFC 1123 formatiert.
Das DequeueCount
-Element weist den Wert 1 auf, wenn die Nachricht das erste Mal aus der Warteschlange entfernt wird. Dieser Wert wird jedes Mal inkrementiert, wenn die Nachricht anschließend erneut aus der Warteschlange entfernt wird.
Hinweis
Das DequeueCount
Element wird nur im Antworttext zurückgegeben, wenn die Warteschlange mit Azure Queue Storage Version 2009-09-19 erstellt wurde.
<QueueMessagesList>
<QueueMessage>
<MessageId>string-message-id</MessageId>
<InsertionTime>insertion-time</InsertionTime>
<ExpirationTime>expiration-time</ExpirationTime>
<PopReceipt>opaque-string-receipt-data</PopReceipt>
<TimeNextVisible>time-next-visible</TimeNextVisible>
<DequeueCount>integer</DequeueCount>
<MessageText>message-body</MessageText>
</QueueMessage>
</QueueMessagesList>
Beispiel für eine Antwort
Response Status:
HTTP/1.1 200 OK
Response Headers:
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Fri, 16 Sep 2011 21:04:30 GMT
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
Response Body:
<?xml version="1.0" encoding="utf-8"?>
<QueueMessagesList>
<QueueMessage>
<MessageId>5974b586-0df3-4e2d-ad0c-18e3892bfca2</MessageId>
<InsertionTime>Fri, 09 Oct 2009 21:04:30 GMT</InsertionTime>
<ExpirationTime>Fri, 16 Oct 2009 21:04:30 GMT</ExpirationTime>
<PopReceipt>YzQ4Yzg1MDItYTc0Ny00OWNjLTkxYTUtZGM0MDFiZDAwYzEw</PopReceipt>
<TimeNextVisible>Fri, 09 Oct 2009 23:29:20 GMT</TimeNextVisible>
<DequeueCount>1</DequeueCount>
<MessageText>PHRlc3Q+dGhpcyBpcyBhIHRlc3QgbWVzc2FnZTwvdGVzdD4=</MessageText>
</QueueMessage>
</QueueMessagesList>
Authorization
Dieser Vorgang kann durch den Kontobesitzer und von jedem Benutzer mit einer SAS (Shared Access Signature) ausgeführt werden, der über die Berechtigung zum Ausführen des Vorgangs verfügt.
Hinweise
Der Nachrichteninhalt wird in dem Format abgerufen, das für den Put Message-Vorgang verwendet wurde.
Wenn eine Nachricht aus der Warteschlange abgerufen wird, enthält die Antwort die Nachricht und einen Pop-Belegwert, der zum Löschen der Nachricht erforderlich ist. Die Nachricht wird nicht automatisch aus der Warteschlange gelöscht, aber nachdem sie abgerufen wurde, ist sie für andere Clients für das durch den visibilitytimeout
Parameter angegebene Zeitintervall nicht sichtbar.
Wenn mehrere Nachrichten abgerufen werden, weist jede Nachricht eine zugeordnete Abrufbestätigung auf. Die maximale Anzahl von Nachrichten, die gleichzeitig abgerufen werden können, beträgt 32.
Vom Client, der die Nachricht abruft, wird erwartet, dass die Nachricht gelöscht wird, nachdem sie verarbeitet wurde und vor der Zeit, die TimeNextVisible
vom -Element der Antwort angegeben wird, die basierend auf dem Wert des visibilitytimeout
Parameters berechnet wird. Der Wert von visibilitytimeout
wird dem Zeitpunkt hinzugefügt, zu dem die Nachricht abgerufen wird, um den Wert von TimeNextVisible
zu bestimmen.
Aufgrund von Uhrschiefe kann eine Nachricht, die mit einem bestimmten visibilitytimeout
abgerufen wird, erneut angezeigt werden, bevor das angegebene Timeout abgelaufen ist. Beachten Sie, dass ein Client ableiten kann, dass eine Nachricht bereits von einem anderen Client entfernt wurde, basierend auf dem Pop-Beleg, der für jedes Entfernen einer Nachricht eindeutig ist. Wenn der Pop-Beleg eines Clients nicht mehr zum Löschen oder Aktualisieren einer Nachricht funktioniert und der Client den Fehler 404 (Nicht gefunden) empfängt, wurde die Nachricht von einem anderen Client aus der Warteschlange entfernt.
Wenn ein Consumer eine Nachricht über Get Messages
abruft, ist diese Nachricht in der Regel für das Löschen reserviert, bis das visibilitytimeout-Intervall abläuft. Dieses Verhalten ist jedoch nicht garantiert. Nach Ablauf des visibilitytimeout-Intervalls wird die Nachricht für andere Consumer wieder sichtbar. Wenn die Nachricht später nicht von einem anderen Consumer abgerufen und gelöscht wird, kann der ursprüngliche Consumer die Nachricht mithilfe des ursprünglichen Pop-Belegs löschen.
Beim erstmaligen Abrufen einer Nachricht wird ihre DequeueCount
-Eigenschaft auf 1 festgelegt. Wenn sie nicht gelöscht und anschließend erneut abgerufen wird, wird die DequeueCount
-Eigenschaft erhöht. Der Client bestimmt anhand dieses Werts möglicherweise, wie oft eine Nachricht abgerufen wurde.
Wenn sich der Parameter visibilitytimeout oder numofmessages außerhalb des Bereichs befindet, gibt der Dienst status Code 400 (Ungültige Anforderung) zusammen mit zusätzlichen Fehlerinformationen zurück, wie im folgenden Beispiel gezeigt.
HTTP/1.1 400 One of the query parameters specified in the request URI is outside the permissible range.
Connection: Keep-Alive
Content-Length: 455
Via: 1.1 TK5-PRXY-22
Date: Wed, 02 May 2012 19:37:23 GMT
Content-Type: application/xml
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6a03526c-ca2c-4358-a63a-b5d096988533
x-ms-version: 2011-08-18
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>OutOfRangeQueryParameterValue</Code>
<Message>One of the query parameters specified in the request URI is outside the permissible range.
RequestId:6a03526c-ca2c-4358-a63a-b5d096988533
Time:2012-05-02T19:37:24.2438463Z
</Message>
<QueryParameterName>numofmessages</QueryParameterName>
<QueryParameterValue>0</QueryParameterValue>
<MinimumAllowed>1</MinimumAllowed>
<MaximumAllowed>32</MaximumAllowed>
</Error>
Weitere Informationen
Azure Queue Storage-Fehlercodes
Autorisieren von Anforderungen an Azure Storage
Status- und Fehlercodes