Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2407 / 233 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Специальности: Программист, Архитектор программного обеспечения
Теги:
Самостоятельная работа 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 :
И откройте лог рабочей роли, чтобы убедиться в работоспособности приложения: