如何使用队列为 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 属性 触发器和绑定是一种特殊情况,它会自动将值解析为应用设置,没有百分号。

Binding expressions - app settings