Обработка ошибок / сбоев в функциях Azure Durable, вызываемых функциями Azure, инициируемыми очередью.

У нас есть очередь хранилища Azure, которая запускает функцию Azure, как только полезная нагрузка / сообщение попадает в очередь. Функция, запускаемая очередью, вызывает другую долговременную функцию для обработки сообщения / полезной нагрузки.

Вот фрагмент кода:

        [FunctionName("QueueTriggerFunction")]
        public Task QueueTriggerFunction(
            [QueueTrigger("MyQueue", Connection = "MyStorage")]string item,
            [OrchestrationClient] DurableOrchestrationClient client,
            ILogger log)
            => client.StartNewAsync("Processor", JsonConvert.DeserializeObject<MyObject>(item));

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

[FunctionName("Processor")]
        public async Task ConcurrencyProcessorAsync(
            [OrchestrationTrigger] DurableOrchestrationContext context,
            ILogger log)
        {
            var myObject= context.GetInput<MyObject>();

            if(ObjectProcessor(myObject) == false)
            {
                throw new Exception("Processor failed");
            }
        }

Я бы хотел, чтобы полезная нагрузка попала в очередь подозрительных сообщений, если указанное выше исключение возникает при сбое метода ObjectProcessor, но на самом деле этого не происходит, потому что исключение не распространяется через клиент оркестратора. Любые предложения о том, как вернуть это исключение в функцию вызывающего абонента, которая запускается по очереди, чтобы полезная нагрузка появлялась в очереди подозрительных сообщений?


person Arash    schedule 27.06.2019    source источник


Ответы (1)


Вы не можете.

QueueTriggerFunction просто запускает Orchestration. После этого его жизненный цикл заканчивается.

Я считаю, что вы можете напрямую добавить свои полезные данные в подозрительную очередь с помощью REST API службы хранилища Azure. или этот .Net-библиотека

Обратите внимание, что имя очереди заражения == $"{queueName}-poison"

person Nafis Islam    schedule 27.06.2019