如何在Azure功能应用程序中为队列触发器配置队列名称

时间:2017-08-19 21:11:18

标签: azure azure-webjobs azure-functions

我在Azure中创建了一个功能应用,并希望使用队列触发器。 我知道如何在设计时配置队列名称,例如:



[FunctionName("MyTestFunction")]
public static void Run([QueueTrigger("myqueue-items", Connection = "testdelete")]string myQueueItem, TraceWriter log)




但是,我希望能够在配置文件中定义和引用它。 我知道function.json(可能是这个),host.json和local.settings.json的存在,但我不知道如何设置队列名称并让它被引用在功能中。

如果我部署在visual studio中创建的新创建的函数(使用新的15.3更新),我可以在部署后的function.json文件中看到以下内容(即使我在本地开发时文件不存在) ):



  "bindings": [
    {
      "type": "queueTrigger",
      "queueName": "myqueue-items",
      "connection": "testdelete",
      "name": "myQueueItem"
    }




我发现如果我创建该文件,并更改" queueName"对于与实际函数中的值不匹配的东西,遗憾的是它并没有覆盖它(我想这太容易了)。

如何在函数QueueTrigger属性中引用function.json中的绑定?

据推测,无论解决方案是什么,我都可以使用毒物队列处理来做同样的事情吗?

我想这样做的原因是因为我需要部署完全相同功能的多个实例,但是将每个实例指向不同的队列(为了克服最大内存限制)。

感谢。

1 个答案:

答案 0 :(得分:24)

您是否可以将队列名称作为应用功能的设置(使用%settingName%语法)引用?然后在您部署的每个功能应用程序中将设置更改为所需的队列名称。

[FunctionName("MyTestFunction")]
public static void Run([QueueTrigger("%MyQueueName%", Connection = "testdelete")]string myQueueItem, TraceWriter log)

并在local.settings.json中指定本地运行

的设置
{
  "Values: {
     "MyQueueName": "myqueue-items"
   }
}