Freigeben über


Aktualisieren einer Nachricht

Der Update Message Vorgang aktualisiert das Sichtbarkeitstimeout einer Nachricht. Sie können diesen Vorgang auch verwenden, um den Inhalt einer Nachricht zu aktualisieren. Eine Nachricht muss in einem Format vorliegen, das in eine XML-Anforderung mit UTF-8-Codierung aufgenommen werden kann, und die codierte Nachricht kann bis zu 64 KB groß sein. Dieser Vorgang wurde mit Version 2011-08-18 der Azure Queue Storage-API eingeführt.

Anfrage

Sie können die Update Message Anforderung wie folgt erstellen. HTTPS wird empfohlen. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos und myqueue durch den Namen Ihrer Warteschlange.

Methode Anforderungs-URI HTTP-Version
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Emulierter Speicherdienst

Dieser Vorgang wird für SDK 1.6 und höhere Versionen unterstützt.

Wenn Sie eine Anforderung an den emulierten Speicherdienst senden, geben Sie den Hostnamen des Emulators und den Queue Storage-Port als 127.0.0.1:10001an, gefolgt vom Namen des emulierten Speicherkontos.

Methode Anforderungs-URI HTTP-Version
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

URI-Parameter

Sie können die folgenden Parameter für den Anforderungs-URI angeben.

Parameter Description
popreceipt Erforderlich. Gibt den gültigen pop-Empfangswert an, der von einem früheren Aufruf der Vorgänge Get Messages oder Update Message zurückgegeben wurde. Sie popreceipt müssen URL-codiert sein.
visibilitytimeout Erforderlich. Gibt den neuen Wert für das Sichtbarkeits-Timeout in Sekunden relativ zur Serverzeit an. Der neue Wert muss größer oder gleich 0 sein und darf nicht größer als 7 Tage sein. Das Sichtbarkeitstimeout einer Nachricht kann nicht auf einen Wert festgelegt werden, der nach der Ablaufzeit liegt. Sie können eine Nachricht aktualisieren, bis sie gelöscht wurde oder abgelaufen ist.
timeout Wahlfrei. Der timeout Parameter wird in Sekunden ausgedrückt. Weitere Informationen finden Sie unter Festlegen von Timeouts für Queue Storage-Vorgänge.

Anforderungsheader

In der folgenden Tabelle werden die erforderlichen und optionalen Anforderungsheader beschrieben.

Anforderungs-Kopfzeile Description
Authorization Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage.
Date or x-ms-date Erforderlich. Gibt die koordinierte Weltzeit (UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage.
x-ms-version Erfordert 2011-08-18 oder höher. Gibt die Version des Vorgangs an, die für diese Anforderung verwendet werden soll. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste.
x-ms-client-request-id Wahlfrei. Stellt einen vom Client generierten, undurchsichtigen Wert mit einer Zeichenbeschränkung von 1 Kibibyte (KiB) bereit, der in den Protokollen aufgezeichnet wird, wenn die Protokollierung konfiguriert wird. 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.

Anfragekörper

Der Text der Anforderung enthält die Nachrichtendaten im folgenden XML-Format. Beachten Sie, dass der Nachrichteninhalt in einem Format vorliegen muss, das mit UTF-8 codiert werden kann.

<QueueMessage>  
    <MessageText>message-content</MessageText>  
</QueueMessage>  

Antwort

Die Antwort enthält einen HTTP-Statuscode und eine Reihe von Antwortheadern.

Statuscode

Ein erfolgreicher Vorgang gibt den Statuscode 204 (Kein Inhalt) zurück. Weitere Informationen zu Statuscodes finden Sie unter Status- und Fehlercodes.

Antwortkopfzeilen

Die Antwort für diesen Vorgang enthält die folgenden Header. Die Antwort kann auch zusätzliche, standardmäßige HTTP-Header enthalten. Alle Standard-Header entsprechen der HTTP/1.1-Protokollspezifikation.

Anforderungs-Kopfzeile Description
x-ms-request-id Dieser Header identifiziert die gestellte Anforderung eindeutig und kann für die Problembehandlung der Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung bei API-Vorgängen.
x-ms-version Gibt die Version von Queue Storage an, die zum Ausführen der Anforderung verwendet wird. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher gestellt werden.
Date Ein UTC-Wert für Datum/Uhrzeit, der den Zeitpunkt angibt, zu dem die Antwort initiiert wurde. Der Dienst generiert diesen Wert.
x-ms-popreceipt Die Pop-Quittung der Warteschlangennachricht.
x-ms-time-next-visible Ein UTC-Wert für Datum/Uhrzeit des Datums/der Uhrzeit, der angibt, wann die Nachricht in der Warteschlange sichtbar sein wird.
x-ms-client-request-id Sie können diesen Header verwenden, um Probleme mit Anforderungen und entsprechenden Antworten zu beheben. Der Wert dieses Headers entspricht dem Wert des Headers x-ms-client-request-id , wenn er in der Anforderung vorhanden ist. Der Wert beträgt maximal 1.024 sichtbare ASCII-Zeichen. Wenn der x-ms-client-request-id Header in der Anforderung nicht vorhanden ist, ist dieser Header in der Antwort nicht vorhanden.

Antwortkörper

Keiner.

Autorisierung

Der Kontoinhaber kann diesen Vorgang ausführen. Darüber hinaus kann jeder Benutzer mit einer Shared Access Signature, der über die Berechtigung zum Ausführen dieses Vorgangs verfügt, dies tun.

Beispielanforderung und -antwort

Die folgende Anforderung erweitert die Sichtbarkeit einer Warteschlangennachricht um 30 Sekunden und aktualisiert ihren Inhalt.

PUT https://myaccount.queue.core.windows.net/myqueue/messages/663d89aa-d1d9-42a2-9a6a-fcf822a97d2c?popreceipt=AgAAAAEAAAApAAAAGIw6Q29bzAE%3d&visibilitytimeout=30&timeout=30 HTTP/1.1  
  

Die Anforderung wird mit den folgenden Headern gesendet:

x-ms-version: 2011-08-18  
x-ms-date: Mon, 29 Aug 2011 17:17:21 GMT  
Authorization: SharedKey myaccount:batcrWZ35InGCZeTUFWMdIQiOZPCW7UEyeGdDOg7WW4=  
Content-Length: 75  

Die Anforderung wird mit dem folgenden XML-Text gesendet:

<QueueMessage>  
    <MessageText>new-message-content</MessageText>  
</QueueMessage>  

Nachdem die Anforderung gesendet wurde, wird die folgende Antwort zurückgegeben:

HTTP/1.1 204 No Content  
Content-Length: 0  
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: df34a7dd-3cbe-4206-a586-d6de3cf225a7  
x-ms-version: 2011-08-18  
x-ms-popreceipt: AwAAAAIAAAApAAAAINtMQ29bzAEBAAAA  
x-ms-time-next-visible: Mon, 29 Aug 2011 17:17:51 GMT  
Date: Mon, 29 Aug 2011 17:17:21 GMT  

Bemerkungen

Ein Update Message Vorgang schlägt fehl, wenn die angegebene Nachricht nicht in der Warteschlange vorhanden ist oder wenn die angegebene Pop-Bestätigung nicht mit der Nachricht übereinstimmt.

Ein POP-Beleg wird von der Get Messages Operation oder der Update Message Operation zurückgegeben. Pop-Belege bleiben gültig, bis eines der folgenden Ereignisse eintritt:

  • Die Nachricht ist abgelaufen.

  • Die Nachricht wurde mit der zuletzt empfangenen Pop-Bestätigung (von Get Messages oder Update Message) gelöscht.

  • Die Unsichtbarkeitszeit ist abgelaufen und die Nachricht wurde durch eine Get Messages Anforderung aus der Warteschlange entfernt. Nach Ablauf der Unsichtbarkeitszeit wird die Nachricht wieder sichtbar. Wenn sie von einer anderen Get Messages Anforderung abgerufen wird, kann die zurückgegebene Pop-Bestätigung verwendet werden, um die Nachricht zu löschen oder zu aktualisieren.

  • Die Nachricht wurde mit einem neuen Sichtbarkeits-Timeout aktualisiert. Wenn die Nachricht aktualisiert wird, wird eine neue Pop-Bestätigung zurückgegeben.

Sie können den Update Message Vorgang verwenden, um die Unsichtbarkeit einer Warteschlangennachricht kontinuierlich zu erweitern. Diese Funktion kann nützlich sein, wenn Sie eine Workerrolle zum Leasen einer Warteschlangennachricht verwenden möchten. Wenn z. B. eine Workerrolle Get Messages aufruft und erkennt, dass sie mehr Zeit benötigt, um eine Nachricht zu verarbeiten, kann sie die Unsichtbarkeit der Nachricht kontinuierlich verlängern, bis sie verarbeitet wird. Wenn die Workerrolle während der Verarbeitung fehlschlägt, wird die Nachricht schließlich wieder sichtbar, und eine andere Workerrolle kann sie verarbeiten.

Eine Nachricht muss in einem Format vorliegen, das in eine XML-Anforderung mit UTF-8-Codierung aufgenommen werden kann. Um Markup in die Nachricht einzuschließen, muss der Inhalt der Nachricht Base64-codiert sein. Jedes XML-Markup in der Nachricht, das nicht codiert ist, führt dazu, dass die Nachricht ungültig ist. Wenn ein ungültiges Zeichen (z. B 0x1F. ) in der Nachricht enthalten ist, auch wenn es mit XML-Escapezeichen versehen ist, sind nachfolgende Lesevorgänge der Nachricht nicht erfolgreich.

Wenn die Nachricht zu groß ist, gibt der Dienst den Statuscode 400 (Ungültige Anforderung) zurück.

Siehe auch

Autorisieren von Anforderungen an Azure Storage
Status- und Fehlercodes
Fehlercodes für Queue Storage