Я только начал использовать долговечные функции, и мне нужно несколько советов о том, как правильно сделать шаблон разветвления. У меня есть FTP-сервер, с которого я читаю все файлы. Я хочу запустить функцию Activity для каждого файла. Насколько я понимаю, функция оркестратора будет вызываться при каждом выполнении функции Activity. Я просто хочу прочитать файлы один раз. Чтобы не вызывать код, который читает файлы и запускает функции действий несколько раз, какой метод рекомендуется? Имеет ли она функцию активности, которая добавляет все функции активности, или использует свойство IsReplaying, или что-то другое?
[FunctionName("OrchestrationMoveFilesToBlob")]
public static async Task<List<string>> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context)
{
var outputs = new List<string>();
if (!context.IsReplaying)
{
// Do you call your database here and make a call to CallActivityAsync for each row?
}
// doing it here is properly very wrong as it will be called multiple times
var tasks = new Task<string>[7];
for (int i = 0; i < 7; i++)
{
tasks[i] = context.CallActivityAsync<string>("E2_CopyFileToBlob",""); }
await Task.WhenAll(tasks);
return outputs;
}
При просмотре примера в ссылке ниже это фактически вызывает его непосредственно вфункция оркестратора? Разве это не плохо? Он продолжает добавлять те же действия снова и снова ....?
https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-cloud-backup