Я бег приложения лазури webjobs SDK консоли (непрерывное) с рекомендуемой установкой:Azure webjob - QueueTrigger останавливает запуск
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage, TextWriter logger)
Лазурное очередь я бег против имеет ~ 6000 сообщений в этом, и я бегу веб-работу локально, в качестве консольного приложения.
Проблема, с которой я столкнулся, заключается в том, что обработка обрабатывается случайным образом после обработки от 0 до 30 сообщений. Консоль остается открытой, но больше консольных сообщений не отображается.
Например, это может быть просто обработать 2 сообщения:
Executing: 'Functions.ProcessQueueMessage' - Reason: 'New queue message detected on 'QueueName'.'
Executed: 'Functions.ProcessQueueMessage' (Succeeded)
Executing: 'Functions.ProcessQueueMessage' - Reason: 'New queue message detected on 'QueueName'.'
Executed: 'Functions.ProcessQueueMessage' (Succeeded)
И потом, ничего. Кажется, что нет ничего плохого в моем подключении к Интернету, и я не могу отследить проблемы до каких-либо конкретных сообщений.
У кого-нибудь еще были проблемы с этим SDK?
Update:
Я убедился, что я использовал правильные версии всех зависимостей путем удаления пакетов NuGet, а затем повторно запустите установку-пакет Microsoft.Axure.Webjobs. Теперь я использую webjobs версии 1.1.0, которая вытащила в версии 4.3 лазурного хранилища.
Как рекомендовано Мэтью, я потянул исходный код для лазурных webjobs, чтобы определить, где процесс замерзает. После того, как происходит Freez вверх, приостановить исполнение и проверил работу темы, для того, что я считаю, является виновником в Microsoft.Azure.WebJobs.Host.CompositeTraceWriter
protected virtual void InvokeTextWriter(TraceEvent traceEvent)
{
if (_innerTextWriter != null)
{
string message = traceEvent.Message;
if (!string.IsNullOrEmpty(message) &&
message.EndsWith("\r\n", StringComparison.OrdinalIgnoreCase))
{
// remove any terminating return+line feed, since we're
// calling WriteLine below
message = message.Substring(0, message.Length - 2);
}
_innerTextWriter.WriteLine(message);
if (traceEvent.Exception != null)
{
_innerTextWriter.WriteLine(traceEvent.Exception.ToDetails());
}
}
}
Линия она замерзает на это строка 66: _innerTextWriter.WriteLine(message);
_innerTextWriter
является экземпляром System.IO.TextWriter.SyncTextWriter
Возможно ли, что в этом классе есть проблема с тупиком или способ его использования?
Некоторые примечания:
- Я бегу в отладчике, так что в этом случае я считаю, что TextWriter пересылает на консоль внутри
- Я мой BATCHSIZE установлен в 1 через
config.Queues.BatchSize = 1;
, не уверен, что может иметь значение
В настоящее время я работаю над настройкой среды на другом компьютере, чтобы я мог видеть, воспроизводится ли она где-то, кроме этой машины (книга с надписью).
Update
Этот вопрос меня не понимание того, как новые окна 10 консольных команд работы. Каждый раз, когда вы нажимаете на окно команд, он переходит в режим выбора, который полностью приостанавливает выполнение процесса.
Вы можете сказать, что в этом состоянии, потому что это будет префикс заголовка окна с надписью «Выбрать»:
Вы должны нажать войти или нажмите снова, чтобы это произошло еще раз.
Итак, два заключительные комментарии:
1) То, что невероятно запутанного и не-интуитивное поведение для окна командной строки!
2) Я надеюсь, что какой-нибудь админ придет, пожалей, позор, который я навлек на себя и свою семью, удалив этот вопрос.
Чтобы избавиться от этого странного поведения, вы можете отключить режим QuickEdit:
Спасибо за идеи Мэтью - я буду исследовать дальше и ответить завтра. Ваши заметки о версиях SDK версии SDK и webjobs SDK звучат многообещающе, так как я боролся с некоторыми ссылками на пакет nuget, когда я вытащил код. Я попытался с пакетом webjobs версии 1.0.1, а затем 1.1.0 с аналогичными результатами, но не рассматривал другие зависимости. –
v1.1.0 требует версию 4.3 SDK Azure Storage. Я знаю, что другие, которые пытались заставить его использовать более позднюю версию, столкнулись с проблемами. Рекомендуем убедиться, что вы используете правильную версию. – mathewc
Ложная тревога по моему предыдущему комментарию :(Я думаю, что я неправильно истолковал счастливую полосу, так как проблема была решена. –