У нас есть Azure Storage Queue, которая запускает функцию 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
, но в действительности это не происходит, потому что исключение не всплывает черезоркестровщик клиент.Любые предложения о том, как сделать это исключение обратно в функцию вызывающей стороны, которая запускается из очереди, чтобы полезные данные появлялись в очереди подозрительных сообщений?