Question#40(AZ-204)
HOTSPOT 問題(2/3) Azure Storage Queues を使用するアプリケーションを開発しています。 以下のコードがあります。 CloudStorageAccount storageAccount = CloudStorageAccount.Parse
(CloudConfigurationManager.GetSetting("StorageConnectionString")); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = queueClient.GetQueueReference("appqueue");
await queue.CreateIfNotExistsAsync(); CloudQueueMessage peekedMessage = await queue.PeekMessageAsync();
if (peekedMessage != null)
{
Console.WriteLine("The peeked message is: {0}", peekedMessage.AsString);
} CloudQueueMessage message = await queue.GetMessageAsync(); 設問 以下の各記述について、正しい場合は「はい」、誤っている場合は「いいえ」を選択してください。
回答エリア
記述(Statement)
最後に読み取られたメッセージは、コード実行後もキュー内に残ります。
正解:A
ここが最も重要なポイントです。Azure Storage Queues では、メッセージを取得(Get)しただけでは削除されません。
PeekMessageAsync(): メッセージを「のぞき見」するだけで、ロックもかからずキューに残ります。GetMessageAsync(): メッセージを取得し、他のクライアントから見えないように「ロック」をかけますが、削除はされません。削除するには、この後に
await queue.DeleteMessageAsync(message)を呼び出す必要があります。このコードには削除処理がないため、ロック期間が過ぎれば再び他のクライアントから見える状態でキューに残り続けます。

コメント