2017-08-19 25 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%語法的文檔? –

相關問題