Azure 函数 - 我们何时需要使用 out 进行输出绑定?
Posted
技术标签:
【中文标题】Azure 函数 - 我们何时需要使用 out 进行输出绑定?【英文标题】:Azure functions - When do we need to use out for output bindings? 【发布时间】:2021-09-10 11:05:52 【问题描述】:在 azure 函数中,有多种方法可以进行输出绑定。
-
对于 Blob 存储,我可以将其声明为绑定,无需其他构造。
对于 CosmosDb ,我需要将其指定为输出参数。
对于队列,我可以在属性中将其指定为返回。
我在下面有上面三个场景的示例代码
public static class myblobtestfunc
[FunctionName("myblobtestfunc")]
[return: Queue("samplequeue", Connection = "storageconnection")]
public static string Run([BlobTrigger("functiontestblob/name.txt", Connection = "storageconnection")]Stream myBlob,
[Blob("copyblob/name", FileAccess.Write)]Stream copyBlob,
[CosmosDB(databaseName: "testfiledb", collectionName: "testfilecoll", ConnectionStringSetting = "cosmosdbconnectionstring")]out dynamic document,
string name,
ILogger log
)
log.LogInformation($"C# Blob trigger function Processed blob\n Name:name \n Size: myBlob.Length Bytes");
myBlob.CopyTo(copyBlob);
document = new Description = name, id = Guid.NewGuid() ;
return name;
输出绑定可以使用这三种方法中的任何一种吗?即我可以将返回与 CosmoDb 绑定一起使用吗? 为什么有如此广泛的输出绑定样式选择?
【问题讨论】:
无论如何您都不能在方法签名中使用返回值。此代码无效。至于为什么你可以做不止一种方式?很好,因为它方便 谢谢@TheGeneral。有意义,但绑定表达式和返回数据的几种方式虽然方便,但引入了一个额外的元素来考虑特别是 out 和 non out 绑定参数。 【参考方案1】:输出绑定可以使用这三种方法中的任何一种吗?即我可以使用 使用 CosmoDb 绑定返回?为什么有如此广泛的输出选择 绑定样式?
如此广泛的输出绑定样式选择来自于Azure函数社区不断推出的支持票。
其实对于具体的输出绑定,这三个不一定都是可行的。请参考官方文档。这三者的设计都是基于对应的SDK包,所以在大多数情况下,相当于在函数体中根据对应的SDK编写代码。
【讨论】:
以上是关于Azure 函数 - 我们何时需要使用 out 进行输出绑定?的主要内容,如果未能解决你的问题,请参考以下文章
Azure 触发的 Webjob - 检测 webjob 何时停止
Flink AggregateFunction窗口函数,merge何时执行
Flink AggregateFunction窗口函数,merge何时执行
Flink AggregateFunction窗口函数,merge何时执行