更新メッセージ

Update Message 操作は、メッセージの表示タイムアウトを更新します。 この操作を使用して、メッセージの内容を更新することもできます。 メッセージは、UTF-8 エンコードを使用して XML 要求に含めることができる形式である必要があり、エンコードされたメッセージのサイズは最大 64 KB です。 この操作は、Azure Queue Storage API のバージョン 2011-08-18 で導入されました。

要求

要求は Update Message 次のように構築できます。 HTTPS が推奨されます。 myaccount はストレージ アカウントの名前に、myqueue はキューの名前に置き換えます。

Method 要求 URI HTTP バージョン
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

エミュレートされたストレージ サービス

この操作は、SDK 1.6 以降のバージョンでサポートされています。

エミュレートされたストレージ サービスに対して要求を行う場合は、エミュレーターのホスト名とキュー ストレージ ポートを として 127.0.0.1:10001指定し、その後にエミュレートされたストレージ アカウント名を指定します。

Method 要求 URI HTTP バージョン
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

URI パラメーター

要求 URI には、次のパラメーターを指定できます。

パラメーター 説明
popreceipt 必須。 メッセージの取得操作またはメッセージの更新操作に対する以前の呼び出しから返される有効なポップレシート値を指定します。 は popreceipt URL エンコードされている必要があります。
visibilitytimeout 必須。 サーバー時間を基準に、新しい表示タイムアウト値を秒単位で指定します。 新しい値は 0 以上である必要があり、7 日を超えることはできません。 メッセージの可視性タイムアウトを、有効期限より後の値に設定することはできません。 メッセージは、削除されるか期限切れになるまで更新できます。
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Queue Storage 操作のタイムアウトの設定」を参照してください。

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
Date or x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
x-ms-version 2011-08-18 以降が必要です。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
x-ms-client-request-id 省略可能。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 詳細については、「 Azure Queue Storage の監視」を参照してください。

要求本文

要求の本文には、次の XML 形式のメッセージ データが含まれます。 メッセージの内容は UTF-8 でエンコードできる形式である必要があることに注意してください。

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

[応答]

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。

状態コード

操作が正常に終了すると、ステータス コード 204 (No Content) が返されます。 状態コードの詳細については、「 状態とエラー コード」を参照してください。

応答ヘッダー

この操作の応答には、次のヘッダーが含まれています。 応答には、追加の標準 HTTP ヘッダーを含めることもできます。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています

要求ヘッダー 説明
x-ms-request-id このヘッダーは、行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用される Queue Storage のバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。
Date 応答が開始された時刻を示す UTC 日付/時刻値。 サービスによってこの値が生成されます。
x-ms-popreceipt キュー メッセージの PopReceipt。
x-ms-time-next-visible メッセージがキューに表示される日時を表す UTC 日付/時刻値。
x-ms-client-request-id このヘッダーを使用して、要求と対応する応答のトラブルシューティングを行うことができます。 このヘッダーの値は、要求に存在する x-ms-client-request-id 場合は、ヘッダーの値と同じです。 この値は、最大 1,024 文字の可視 ASCII 文字です。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。

応答本文

なし。

承認

アカウント所有者は、この操作を実行できます。 さらに、この操作を実行するアクセス許可を持つ共有アクセス署名を持つすべてのユーザーがこれを行うことができます。

要求と応答の例

次の要求は、キュー メッセージを表示できる期間を 30 秒延長し、その内容を更新します。

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

要求は次のヘッダーと共に送信されます。

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

要求は次の XML 本文と共に送信されます。

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

要求が送信された後、次の応答が返されます。

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  

注釈

Update Message指定したメッセージがキューに存在しない場合、または指定されたポップレシートがメッセージと一致しない場合、操作は失敗します。

PopReceipt は、Get Messages 操作または Update Message 操作から返されます。 PopReceipt は、次のいずれかのイベントが発生するまで有効な状態に維持されます。

  • メッセージの有効期限が切れた。

  • メッセージは、 または Update MessageからGet Messages受信した最後のポップレシートを使用して削除されました。

  • 非表示時間が経過し、Get Messages 要求によりメッセージがデキューされた。 非表示時間が経過し、再びメッセージを参照できるようになった。 別 Get Messages の要求によって取得された場合は、返されたポップレシートを使用してメッセージを削除または更新できます。

  • 新しい表示タイムアウトでメッセージが更新された。 メッセージが更新されると、新しい PopReceipt が返されます。

操作を Update Message 使用して、キュー メッセージの非表示を継続的に拡張できます。 この機能は、ワーカー ロールでキュー メッセージをリースする場合に便利です。 たとえば、ワーカー ロールが メッセージの取得 を呼び出し、メッセージの処理に時間が必要であると認識した場合、メッセージが処理されるまでメッセージの非表示を継続的に拡張できます。 処理中にワーカー ロールが失敗すると、最終的にメッセージが再び表示され、別の worker ロールがそれを処理できるようになります。

関連項目

Azure Storage への要求を承認する
状態コードとエラー コード
キュー ストレージのエラー コード