Update Message操作は、メッセージの可視性タイムアウトを更新します。 この操作を使用して、メッセージの内容を更新することもできます。 メッセージは、UTF-8 エンコードの XML 要求に含めることができる形式である必要があり、エンコードされたメッセージのサイズは最大 64 KB です。 この操作は、Azure Queue Storage API のバージョン 2011-08-18 で導入されました。
リクエスト
Update Message要求は次のように構築できます。 HTTPS をお勧めします。
myaccount をストレージ アカウントの名前に置き換え、myqueue をキューの名前に置き換えます。
| メソッド | 要求 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 として指定し、その後にエミュレートされたストレージ アカウント名を指定します。
| メソッド | 要求 URI | HTTP バージョン |
|---|---|---|
PUT |
http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> |
HTTP/1.1 |
URI パラメーター
リクエスト URI には、次のパラメータを指定できます。
| パラメーター | Description |
|---|---|
popreceipt |
必須。
メッセージの取得またはメッセージの更新操作に対する以前の呼び出しから返される有効なポップ受信確認値を指定します。
popreceiptは URL エンコードされている必要があります。 |
visibilitytimeout |
必須。 サーバー時間に対する新しい可視性タイムアウト値を秒単位で指定します。 新しい値は 0 以上である必要があり、7 日より大きくすることはできません。 メッセージの可視性タイムアウトは、有効期限より後の値に設定することはできません。 メッセージは、削除されるか期限が切れるまで更新できます。 |
timeout |
Optional.
timeout パラメーターは秒単位で表されます。 詳しくは、 キュー・ストレージ操作のタイムアウトの設定を参照してください。 |
要求ヘッダー
次の表では、必須の要求ヘッダーと省略可能な要求ヘッダーについて説明します。
| リクエストヘッダー | Description |
|---|---|
Authorization |
必須。 認可スキーム、アカウント名、および署名を指定します。 詳細については、「 Azure Storage への要求を承認する」を参照してください。 |
Date
or x-ms-date
|
必須。 要求の協定世界時 (UTC) を指定します。 詳細については、「 Azure Storage への要求を承認する」を参照してください。 |
x-ms-version |
2011-08-18 以降が必要です。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。 |
x-ms-client-request-id |
Optional. クライアントが生成した不透明な値に、ログの構成時にログに記録される 1 キビバイト (KiB) の文字制限を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けることを強くお勧めします。 詳細については、「 Azure Queue Storage の監視」を参照してください。 |
リクエストの本文
要求の本文には、次の XML 形式のメッセージ データが含まれています。 メッセージの内容は、UTF-8でエンコードできる形式である必要があることに注意してください。
<QueueMessage>
<MessageText>message-content</MessageText>
</QueueMessage>
[応答]
応答には、HTTP 状態コードと一連の応答ヘッダーが含まれます。
状態コード
操作が成功すると、状態コード 204 (コンテンツなし) が返されます。 状態コードの詳細については、「 状態コードとエラー コード」を参照してください。
応答ヘッダー
この操作の応答には、次のヘッダーが含まれます。 応答には、追加の標準 HTTP ヘッダーを含めることもできます。 すべての標準ヘッダーは、 HTTP/1.1 プロトコル仕様に準拠しています。
| リクエストヘッダー | Description |
|---|---|
x-ms-request-id |
このヘッダーは、行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。 |
x-ms-version |
要求の実行に使用されるキュー・ストレージのバージョンを示します。 このヘッダーは、バージョン 2009-09-19 以降に対して行われた要求に対して返されます。 |
Date |
応答が開始された時刻を示す UTC の日付/時刻値。 サービスによってこの値が生成されます。 |
x-ms-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 ヘッダーが要求に存在しない場合、このヘッダーは応答に存在しません。 |
応答内容
なし。
Authorization
アカウント所有者は、この操作を実行できます。 さらに、この操作を実行するアクセス許可を持つ共有アクセス署名を持つすべてのユーザーが実行できます。
要求と応答の例
次の要求は、キューメッセージの可視性を 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 操作は失敗します。
ポップ レシートは、 Get Messages 操作または Update Message 操作によって返されます。 ポップ レシートは、次のいずれかのイベントが発生するまで有効です。
メッセージの有効期限が切れています。
メッセージは、
Get MessagesまたはUpdate Messageから最後に受信したポップ レシートを使用して削除されました。非表示時間が経過し、メッセージは
Get Messages要求によってデキューされました。 非表示時間が経過すると、メッセージは再び表示されます。 別のGet Messages要求によって取得された場合は、返されたポップ レシートを使用してメッセージを削除または更新できます。メッセージは、新しい可視性タイムアウトで更新されました。 メッセージが更新されると、新しいポップ レシートが返されます。
Update Message操作を使用して、キュー・メッセージの非表示性を継続的に拡張できます。 この機能は、ワーカー ロールにキュー メッセージをリースする場合に役立ちます。 たとえば、ワーカー ロールが Get Messages を 呼び出し、メッセージの処理にさらに時間が必要であることを認識した場合、メッセージが処理されるまでメッセージの非表示性を継続的に延長できます。 処理中にワーカー ロールが失敗した場合、最終的にメッセージは再び表示され、別のワーカー ロールがメッセージを処理できるようになります。
メッセージは、UTF-8 エンコードの XML 要求に含めることができる形式である必要があります。 メッセージにマークアップを含めるには、メッセージの内容が Base64 でエンコードされている必要があります。 エンコードされていないメッセージ内の XML マークアップは、メッセージが無効になります。 無効な文字 ( 0x1F など) がメッセージに含まれている場合、XML でエスケープされていても、その後のメッセージの読み取りは成功しません。
メッセージが大きすぎる場合、サービスは状態コード 400 (Bad Request) を返します。