Как показано в моем вопросе переполнения стека Azure webjob not appearing to respect MaxDequeueCount property, я искал проблему, несмотря на то, что, несмотря на то, что моя настройка свойства MaxDequeueCount равнялась 1, некоторые элементы отбрасываются многими раз, пока они не отравлены (на самом деле некоторые предметы никогда не могут быть отравлены вообще и просто деактивируются, терпят неудачу, а затем повторяются и терпят неудачу).Журналы Azure webjob - поиск журналов, которые подробно описывают обработку SDK для элементов с запущенной очередью
Webjobs SDK автоматически обрабатывает повторные попытки и отравления сообщений с запуском очереди, и я ищу журналы, содержащие данные об этой обработке.
Например, я вижу, что моя функция обнаружила новый элемент очереди, просмотрев журнал webjob через SCM по адресу https://myappengine.scm.azurewebsites.net/vfs/data/jobs/continuous/StuffProcessor/job_log.txt
(кстати, если я включил подробное ведение журнала в Azure storage в веб-приложении, я могу получить эта же информация в Blob?).
[02/22/2017 01:47:22 > ec8d0f: INFO] Executing: 'StuffProcessor.ProcessQueueMessage' - Reason: 'New queue message detected on 'stuff-processor'.'
[02/22/2017 01:47:26 > ec8d0f: INFO] Executed: 'StuffProcessor.ProcessQueueMessage' (Succeeded)
[02/22/2017 01:47:26 > ec8d0f: INFO] Executing: 'StuffProcessor.ProcessQueueMessage' - Reason: 'New queue message detected on 'stuff-processor'.'
Я также могу получить некоторую информацию о DEQUEUE сосчитать элемента, просматривая журналы в azure-jobs-host-archive
контейнере, если включен подробное протоколирование в хранилище Azure на веб-приложение:
{
"Type": "FunctionCompleted",
"EndTime": "2017-02-22T00:07:40.8133081+00:00",
"Failure": {
"ExceptionType": "Microsoft.Azure.WebJobs.Host.FunctionInvocationException",
"ExceptionDetails": "Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: ItemProcessor.ProcessQueueMessage ---> MyApp.Exceptions.MySpecialAppExceptionType: Exception of type 'MyApp.Exceptions.MySpecialAppExceptionType' was thrown.
},
"ParameterLogs": {},
"FunctionInstanceId": "1ffac7b0-1290-4343-8ee1-2af0d39ae2c9",
"Function": {
"Id": "MyApp.Processors.ItemProcessor.ProcessQueueMessage",
"FullName": "MyApp.Processors.ItemProcessor.ProcessQueueMessage",
"ShortName": "ItemProcessor.ProcessQueueMessage",
"Parameters": [
{
"Type": "QueueTrigger",
"AccountName": "MyStorageAccount",
"QueueName": "stuff-processor",
"Name": "sourceFeedItemQueueItem"
},
{
"Type": "BindingData",
"Name": "dequeueCount"
},
{
"Type": "ParameterDescriptor",
"Name": "logger"
}
]
},
"Arguments": {
"sourceFeedItemQueueItem": "{\"SourceFeedUpdateID\":437530,\"PodcastFeedID\":\"2d48D2sf2\"}",
"dequeueCount": "96",
"logger": null
},
"Reason": "AutomaticTrigger",
"ReasonDetails": "New queue message detected on 'stuff-processor'.",
"StartTime": "2017-02-22T00:07:40.6017341+00:00",
"OutputBlob": {
"ContainerName": "azure-webjobs-hosts",
"BlobName": "output-logs/1ffd3c7b012c043438ed12af0d39ae2c9.txt"
},
"ParameterLogBlob": {
"ContainerName": "azure-webjobs-hosts",
"BlobName": "output-logs/1cf2c1b012sa0d3438ee12daf0d39ae2c9.params.txt"
},
"LogLevel": "Info",
"HostInstanceId": "d1825bdb-d92a-4657-81a4-36253e01ea5e",
"HostDisplayName": "ItemProcessor",
"SharedQueueName": "azure-webjobs-host-490daea03c70316f8aa2509438afe8ef",
"InstanceQueueName": "azure-webjobs-host-d18252sdbd92a4657d1a436253e01ea5e",
"Heartbeat": {
"SharedContainerName": "azure-webjobs-hosts",
"SharedDirectoryName": "heartbeats/490baea03cfdfd0416f8aa25aqr438afe8ef",
"InstanceBlobName": "zd1825bdbdsdgga465781a436q53e01ea5e",
"ExpirationInSeconds": 45
},
"WebJobRunIdentifier": {
"WebSiteName": "myappengine",
"JobType": "Continuous",
"JobName": "ItemProcessor",
"RunId": ""
}
}
Я не могут найти, но являются журналами, которые показывают детали для конкретного элемента очереди, где обработка завершается сбоем из-за исключения и помещается в очередь ядов. Я ищу их, пытаясь продолжить устранение явного игнорирования свойства MaxDequeueCount. Это зарегистрировано?
UPDATE: Я нашел пост Azure WebJobs with Storage Queue and Exceptions и содержал следующий скриншот:
Этот скриншот показывает стандарт «обнаруженную Новое сообщение очереди ...» сообщения (которые я вижу, как на Azure и выполняется локально в эмуляторе), а также показывает: «Сообщение достигло MaxDequeueCount X ... Перемещение сообщения в очередь« xyz-poison »», которое только отображается локально в эмуляторе. По какой-то причине не работает ли среда выполнения на основе Azure? Я никогда не вижу подобных сообщений, связанных с отравлением, при запуске локально в консольном окне или на панели инструментов webjobs или при запуске на Azure.
Тем не менее пытается получить это работает локально - Я думал, что ваше предложение было хорошо. У меня нет проблем с отправкой всего на регистратор - я сейчас это делаю. Я ищу, чтобы увидеть, что делает SDK - для устранения неполадок, которые я хочу увидеть, когда SDK пытается отравить (или не) сообщение. Мой 'if (item ==" exception ")' был просто псевдокодом, а не буквальным кодом. Это просто означало обращение к элементу в очереди, который вызвал бы исключение. В настоящее время я получаю параметр dequeueCount элемента как параметр (я добавил его), и я могу видеть в своих журналах dequeueCounts для некоторых предметов, которые будут выше и выше. – Howiecamp
Просто добавьте второй комментарий - у меня нет проблем с перехватом исключений - проблема в том, что я не вижу, почему sdk не отравляет сообщения после MaxDequeueCount количество раз. – Howiecamp
При тестировании у вас есть один экземпляр, запущенный в Azure, и попадание в очередь хранения, которая также находится в Azure? –