首页 文章

Azure WebJobs SDK如何允许将特定的参数列表注入到Function方法中?

提问于
浏览
2

Azure SDK(用于队列)mentions a specific list of parameters that are allowed to be passed into a webjob Function .

例如

您可以通过向方法签名添加参数来获取以下消息属性:DateTimeOffset expirationTime DateTimeOffset insertionTime DateTimeOffset nextVisibleTime string queueTrigger(包含消息文本)string id string popReceipt int dequeueCount如果要直接使用Azure存储API,还可以添加CloudStorageAccount参数 .

我试图找到它在源代码中是如何完成的,因为我想尝试传递我自己的参数 .

任何人都可以解释/链接这是如何可能/完成的?

2 回答

  • 3

    这些参数是特定触发器绑定的 static binding contract 的一部分 . 每个触发器绑定定义其(可能为空)一组"built in"绑定值 . 例如 . here是QueueTrigger的源代码,它定义了这些值 . 只有这个静态 Contract 中的值才能以这种方式绑定为方法参数 .

    运行时根据 index time 处的触发器合约验证方法签名,这就是我将其称为静态 Contract 的原因 . 如果无法根据 Contract 解析方法的一个或多个参数,则会发生索引错误 . 在运行时,当触发方法时,使用来自实际触发值(例如,队列消息)的值来填充绑定 Contract .

    扩展触发器绑定可以以相同的方式定义 Contract . 例如,hereAzure Functions 中的HttpTrigger绑定将路由模板中的路由参数添加到其绑定 Contract 的位置 . 例如 . 对于像 products/{category:alpha}/{id:int?} 这样的路径模板,"category"和"id"都会添加到 Contract 中,因此可以直接绑定为方法参数 . 在运行时,绑定数据将使用触发http请求URL中的实际运行时值进行填充 .

    此 Contract 的定义是触发器绑定作者的责任,并且不能从外部扩展 .

  • 0

    首先,WebJobs SDK Quick Reference列出了 binding parameters 到队列消息的属性,您可以检查它 .

    其次,如果您想传递自己的参数,可以尝试create new custom binding or make existing bindings customizable .

相关问题