Я реализовал функцию Azure.
У меня есть следующий случай:
- Когда что-то загружено в BLOB-объект (Input Blob является триггером)
- Логика процесса
- Сохранение чего-либо в выходной BLOB-объект (Вывод как возвращаемое значение)
- Сохранение чего-либо еще в коллекции динамо-базы данных (Выходной параметр)
Сохранение чего-либо еще в другой коллекции динамо-базы данных (Выводпараметр)
[FunctionName("myFunction")]
[return: Blob("images-text-out/{name}.txt")]
public static string Run([BlobTrigger("samples-workitems/{name}", Connection = "StorageConnection")]Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob myBlob,
string name,
string blobTrigger,
[CosmosDB(
databaseName: "my-db-cosmos",
collectionName: "CollectionA",
ConnectionStringSetting = "CosmosDBConnection")] out dynamic processedFirst,
[CosmosDB(
databaseName: "my-db-cosmos",
collectionName: "CollectionB",
ConnectionStringSetting = "CosmosDBConnection")] out dynamic processedSecond,
ILogger log,
ExecutionContext context)
{
// . . .
myBlob.DownloadToStreamAsync(memoryStream).Wait();
// . . .
}
Работает нормально.Проблема только в том, что я не могу использовать преимущество асинхронных вызовов.Понятно почему, потому что метод с выходным параметром не может быть асинхронным методом.
Как реализовать функцию Azure с несколькими выходами, используя преимущество асинхронных вызовов?
Спасибо