Я запускаю облачную службу в режиме отладки в Visual Studio, и я вижу большую задержку с события нажатия кнопки на моем живом сайте и попадания в точку останова на моем сеансе отладки облачного сервиса. Это займет около 20-30 секунд от нажатия кнопки до появления сообщения о очереди. Это нормально? Это связано с тем, что он работает в режиме отладки, или это примерно соответствует тому, как оно будет выглядеть на производстве? Это мой первый проект облачных сервисов, поэтому я все еще участвую в поворотах. Я единственный человек, попавший в облачный сервис, поскольку он все еще находится в разработке.Задержка, ожидающая сообщения очереди Azure
EDIT для добавления кодовых вызовов.
Вот звонки, которые я делаю с веб-сайта. Сообщение о очереди - это просто имя файла, поэтому полезная нагрузка сообщения очень мала.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
//Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("queue");
//Create the queue if it doesn't already exist.
queue.CreateIfNotExists();
//Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage(filename);
queue.AddMessage(message, timeToLive: TimeSpan.FromMinutes(1), initialVisibilityDelay: null);
Этот вызов занимает около 30 секунд, чтобы забрать здесь в WorkerRole:
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
CloudBlobContainer hmtlcontainer = blobClient.GetContainerReference("conthtml");
// Create the container if it doesn't already exist.
container.CreateIfNotExists();
hmtlcontainer.CreateIfNotExists();
// Create the queue client
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.GetQueueReference("queue");
try
{
// Look for a new queue message
CloudQueueMessage peekedMessage = queue.GetMessage(visibilityTimeout: TimeSpan.FromSeconds(3));
На самом деле, неясно, выполнялась ли эта удаленная отладка, фактически связанная с облачным сервисом в Azure или в вашем эмуляторе. Я бы не ожидал высокой задержки, если вы отлаживаете «локально» против эмулятора, но если вы используете удаленную отладку, подключенную к машине, работающей с Azure, то, возможно. – MikeWo
Выполняется ли какая-либо другая обработка в вашем рабочем роле во время цикла? Здесь недостаточно кода, чтобы узнать, что может сделать код, что продлит время между вызовами GetMessages. Кроме того, если это в цикле, дополнительные вызовы CreateIfNotExists и создание клиента cloudqueue могут быть проблемой. – MikeWo