Я создал следующее, используя предоставленный по умолчанию пример кода в Функциях Azure:
- HTTP-стартер с надежными функциями
- Оркестратор устойчивых функций
- Активность устойчивых функций с именем Hello1
HTTP Starter вызывает Orchestrator, но Orchestrator не может вызвать Activity.
Код Orchestrator, который идентичен исходному образцу, за исключением того, что добавлено меньше выходных данных, а для имени действия задано значение Hello1:
public static async Task<List<string>> Run(DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "Hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
Orchestrator выдает следующую ошибку:
Функция «DurableFunctionsOrchestrator1 (Orchestrator)» завершилась с ошибкой. Причина: System.AggregateException: произошла одна или несколько ошибок. (Обнаружено многопоточное выполнение. Это может произойти, если код функции оркестратора ожидает выполнения задачи, которая не была создана методом DurableOrchestrationContext.
Единственный вызов await
выполняется для объекта DurableOrchestrationContext
, так что же дает?
My HTTP Starter — пример кода по умолчанию без изменений:
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req,
DurableOrchestrationClient starter,
string functionName,
ILogger log)
{
// Function input comes from the request content.
dynamic eventData = await req.Content.ReadAsAsync<object>();
// Pass the function name as part of the route
string instanceId = await starter.StartNewAsync(functionName, eventData);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
Код активности также является стандартным кодом примера:
public static string Run(string name)
{
return $"Hello {name}!";
}
Настройки службы приложений функций:
- Версия среды выполнения: ~3
- Платформа: 32 бит
- Версия управляемого конвейера: интегрированная