Опубликован: 30.05.2011 | Уровень: специалист | Доступ: платный
Самостоятельная работа 7:
Работа с Windows AzureQueue
Извлечение сообщения из очереди
Перейдите с помощью обозревателя решений к файлу Global.asax.cs и добать следующий код в метод ApplicationStart :
void Application_Start(object sender, EventArgs e)
{
CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
});
}Затем перейдите к файлу WorkerRole.cs нашей рабочей роли. Добавьте следующие ссылки:
using System.Diagnostics; using System.Threading; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Diagnostics; using Microsoft.WindowsAzure.ServiceRuntime; using Microsoft.WindowsAzure.StorageClient
Измените метод OnStart в соответствие со следующим кодом:
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
{
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
});
return base.OnStart();
}Затем приведите метод Run в соответствие с:
public override void Run()
{
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// получение ссылок на сообщения очереди
var queueClient = storageAccount.CreateCloudQueueClient();
var queue = queueClient.GetQueueReference("messagequeue");
// получение сообщение и передача его в лог эмулятора Compute Emulator
while (true)
{
Thread.Sleep(10000);
if (queue.Exists())
{
var msg = queue.GetMessage();
if (msg != null)
{
Trace.TraceInformation(string.Format("Сообщение '{0}' обработано.", msg.AsString));
queue.DeleteMessage(msg);
}
}
}
}Запустите приложение, заполните текстовое поле и нажмите кнопку "Отправить" :
Затем, откройте интерфейс Compute Emulator :
И откройте лог рабочей роли, чтобы убедиться в работоспособности приложения:


