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



Azure SDK(用于队列)提到了允许传递给webjob函数的特定参数列表。

您可以通过添加参数来获得以下消息属性方法签名:

DateTimeOffset expirationTime
DateTimeOffset insertionTime
DateTimeOffset nextVisibleTime
string queueTrigger(包含消息文本)
string id
string popReceipt
int dequeueCount

如果你想直接使用Azure存储API,你也可以添加一个CloudStorageAccount参数。

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

谁能解释/链接这是如何可能/完成的?

这些参数是用于特定触发器绑定的静态绑定契约的一部分。每个触发器绑定定义了它的(可能为空的)"内置"绑定值集。例如,下面是QueueTrigger的源代码,它在其中定义了这些值。只有静态契约中的值才能以这种方式绑定为方法参数。

运行时在索引时间根据合约验证方法签名,这就是为什么我将其称为静态合约。如果无法根据契约解析方法的一个或多个参数,则会发生索引错误。在运行时,当一个方法被触发时,绑定契约将用实际触发值(例如队列消息)填充。

扩展触发器绑定可以用同样的方式定义契约。例如,这里是Azure Functions中的HttpTrigger绑定从路由模板中添加路由参数到它的绑定契约的地方。例如,对于像products/{category:alpha}/{id:int?}这样的路由模板,"category"one_answers"id"都被添加到契约中,因此可以直接绑定为方法参数。在运行时,绑定数据将使用来自触发http请求URL的实际运行时值填充。

这个契约的定义是触发器绑定作者的责任,它不能从外部扩展。

首先,WebJobs SDK Quick Reference列出了绑定参数到队列消息的属性,您可以检查它。

第二,如果你想传递你自己的参数,你可以尝试创建新的自定义绑定或使现有的绑定可自定义

最新更新