close
有些網站會導入 Queue 的機制,原因在於不想讓使用者長時間等待。例如使用者註冊網站會員,通常在註冊後會寄信到使用者所填入的信箱,但是在註冊時並不會馬上寄信,而是會留下一筆記錄然後就通知使用者已完成註冊的動作。這樣做的原因在於,如果寄信的機制出了問題或是寄信的時間過長,並不會影響到使用者的註冊及使用。而留下的這筆記錄,之後都會有一個 batch job 去處理,這樣的處理過程,讓註冊及寄信這兩個服務不會產生過大的相依性。
Azure 上有提供一個 Queue 的機制,讓開發人員不用額外去架 MSMQ 的服務,以下示範使用的方式。
首先在設定檔加入以下設定:
<appSettings> <add key="queueStorage" value="DefaultEndpointsProtocol=http;AccountName=[Account];AccountKey=[Your Key]" /> </appSettings>
之後宣告 CloudStorageAccount。
Microsoft.WindowsAzure.Storage.CloudStorageAccount cloudAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.DevelopmentStorageAccount; Microsoft.WindowsAzure.Storage.CloudStorageAccount.TryParse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("queueStorage"), out cloudAccount);
存取 Queue之前,可以先確認 Queue 已經建立。
CloudQueueClient queueClient = cloudAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("testmyqueue");
bool isSucc = queue.CreateIfNotExists();
新增訊息的方式也非常簡單。
CloudQueueMessage message = new CloudQueueMessage(input); queue.AddMessage(message);
而取出訊息的方式如下。
CloudQueueMessage qMessage = queue.GetMessage(); while (qMessage != null) { string value = qMessage.AsString; Console.WriteLine(value); qMessage = queue.GetMessage(); }
Queue 的機制相當好用,如果要架設高流量網站,可以嚐試將這樣的技術導入部份的服務,可以避免服務停擺的可能。
全站熱搜