如何使用队列为 Azure Functions 设置多用户环境?
How to set up a multi-user environment for Azure Functions using queues?
我们已经开始在我们的 Azure 函数中使用队列绑定来执行更长的 运行 任务,例如发送批量电子邮件和 CosmosDB 的 "clean-up" 任务。我们使用 Functions 模拟器在本地进行开发,然后提交到 VSTS/Azure DevOps,然后自动部署到我们的 Function App。
似乎很快我们就会有多个函数(两个本地模拟器和一个云函数)都在监听同一个队列。我们尝试在本地禁用并在本地重命名,但这些看起来都像是笨拙的解决方法,需要太多的手动工作,并且有可能将错误的队列名称推送到 VSTS 中。
我们如何配置function.json中的队列名称来读取环境变量?绑定中的连接设置采用环境变量的名称,但队列设置需要一个字符串。
{
"disabled": false,
"bindings": [
{
"name": "myQueueItem",
"type": "queueTrigger",
"direction": "in",
"queueName": "emailer",
"connection": "STORAGE_CONNECTION_STRING"
}
]
}
只需用 %
包裹变量名,函数就可以从门户上的应用程序设置和本地 local.settings.json 中的值中读取其值。
"queueName": "%myqueue%"
connection
属性 触发器和绑定是一种特殊情况,它会自动将值解析为应用设置,没有百分号。
我们已经开始在我们的 Azure 函数中使用队列绑定来执行更长的 运行 任务,例如发送批量电子邮件和 CosmosDB 的 "clean-up" 任务。我们使用 Functions 模拟器在本地进行开发,然后提交到 VSTS/Azure DevOps,然后自动部署到我们的 Function App。
似乎很快我们就会有多个函数(两个本地模拟器和一个云函数)都在监听同一个队列。我们尝试在本地禁用并在本地重命名,但这些看起来都像是笨拙的解决方法,需要太多的手动工作,并且有可能将错误的队列名称推送到 VSTS 中。
我们如何配置function.json中的队列名称来读取环境变量?绑定中的连接设置采用环境变量的名称,但队列设置需要一个字符串。
{
"disabled": false,
"bindings": [
{
"name": "myQueueItem",
"type": "queueTrigger",
"direction": "in",
"queueName": "emailer",
"connection": "STORAGE_CONNECTION_STRING"
}
]
}
只需用 %
包裹变量名,函数就可以从门户上的应用程序设置和本地 local.settings.json 中的值中读取其值。
"queueName": "%myqueue%"
connection
属性 触发器和绑定是一种特殊情况,它会自动将值解析为应用设置,没有百分号。