获取相同的Azure功能队列触发器代码以根据应用程序设置定位2个不同的队列

时间:2018-08-05 14:38:36

标签: msbuild azure-functions queuetrigger

我有一个azure函数,我希望目标2个不同的队列。
我真的不想拥有2个单独的存储库来进行管理,并试图保持它们相同。为了测试我的功能,我一直在使用预编译器语句,并认为我可以像这样简单地扩展它:

public static class ProdIndividualParse
{
#if DEBUG
    [FunctionName("TESTIndividualParse")]
    [Timeout("60:00:00")]
    public async static Task Run([QueueTrigger("parse-to-cosmos", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#elif RELEASE
     [FunctionName("PRODIndividualParse")]
    [Timeout("10:00:00")]
    public async static Task Run([QueueTrigger("prod-cosmos-parse", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#elif DEV
     [FunctionName("DEVIndividualParse")]
    [Timeout("10:00:00")]
    public async static Task Run([QueueTrigger("dev-cosmos-parse", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#endif

(不知道如何用'#'号正确格式化)

我尝试将键值对添加到开发环境的设置中: 配置开发无济于事。

1 个答案:

答案 0 :(得分:3)

队列名称可以从“应用程序设置”中获取。添加名为例如的设置myqueuename,然后将函数定义为

[FunctionName("IndividualParse")]
[Timeout("10:00:00")]
public async static Task Run([QueueTrigger("%myqueuename%", Connection = "QueueAddress")] 
    string myQueueItem, TraceWriter log)

很明显,您可以为Dev vs Test Vs Prod环境设置不同的值,只要它们位于单独的Function App或插槽中即可。