да. Он по-прежнему создавал (несколько) сообщений для одного и того же исходного сообщения, но также помещал его обратно в стандартную очередь. Так что, похоже, он корректно отравляется, но не удаляет из исходной очереди.

я есть веб-работа Azure с несколькими триггерными функциями. Документация SDK наhttps://docs.microsoft.com/en-us/azure/app-service-web/websites-dotnet-webjobs-sdk-storage-queues-how-to#config определяетMaxDequeueCount свойство как:

Максимальное количество повторных попыток, прежде чем сообщение очереди будет отправлено в опасную очередь (по умолчанию 5).

но я не вижу такого поведения. В моей веб-работе у меня есть:

JobHostConfiguration config = new JobHostConfiguration();
config.Queues.MaxDequeueCount = 1;
JobHost host = new JobHost(config);
host.RunAndBlock();

и тогда у меня есть функция, запускаемая очередью, в которой я выкидываю исключение:

public void ProcessQueueMessage([QueueTrigger("azurewejobtestingqueue")] string item, TextWriter logger)
{
   if ( item == "exception" )
   {
      throw new Exception();
   }
}

Глядя на панель инструментов webjobs, я вижу, что SDK делает 5 попыток (по умолчанию 5, как указано выше):

и после 5-й попытки сообщение перемещается в очередь отравления. Я ожидаю увидеть 1 повтор (или без повторов?), А не 5.

ОБНОВЛЕНИЕ. Включено подробное ведение журнала для веб-приложения и выбрано сохранение этих журналов в контейнере BLOB-объектов Azure. Нашел несколько журналов, относящихся к моей проблеме, вazure-jobs-host-archive контейнер. Вот пример, показывающий элемент со счетчиком изъятий 96:

{
  "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": ""
  }
}

Кроме того, я ищу журналы, которые будут показывать мне детали для определенного элемента очереди, где обработка завершается успешно (и, следовательно, удаляется из очереди) или завершается неудачей из-за исключительной ситуации и помещается в очередь отравления. До сих пор я не нашел никаких журналов, показывающих эту деталь. Файлы журналов, указанные в выходных данных выше, не содержат данных такого рода.

ОБНОВЛЕНИЕ 2: Посмотрел на состояние моей очереди с ядом, и похоже, что это может быть пистолет для курения, но я слишком плотный, чтобы соединить 2 и 2. Глядя на скриншот очереди ниже, вы можете увидеть сообщение с идентификатором (левый столбец)431210 там много раз. Тот факт, что он появляется несколько раз, говорит мне, что сообщение в исходной очереди терпит неудачунеправильно.

Ответы на вопрос(5)

Ваш ответ на вопрос