2017-08-19 31 views
2

我正在Azure中创建一个函数应用程序,并希望使用队列触发器。 我知道如何在设计时设置队列名称,e.g:如何在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中的绑定?

大概无论什么解决方案是否会允许我用毒队列处理做同样的事情?

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

谢谢。

+0

我建议你实现INameResolver接口。 https://stackoverflow.com/questions/44901165/azure-function-flexible-test-and-production-queue-names – camelCase

回答

6

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

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

,并指定local.settings.json设置为本地运行

{ 
    "Values: { 
    "MyQueueName": "myqueue-items" 
    } 
} 
+1

我在哪里可以找到%settingName%语法的文档? –

相关问题