代码之家  ›  专栏  ›  技术社区  ›  A.Rowan

根据应用程序设置,获取相同的Azure函数队列触发代码以针对2个不同的队列

  •  1
  • A.Rowan  · 技术社区  · 8 年前

    我有一个azure函数,我想有两个不同的目标队列。
    我真的不想有两个独立的存储库来管理和保持它们的一致。为了测试我的函数,我一直在使用预编译器语句,并认为我可以像这样简单地展开它:

    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 回复  |  直到 8 年前
        1
  •  3
  •   Mikhail Shilkov    8 年前

    队列名称可以从应用程序设置中获取。添加名为e.g.的设置。 myqueuename 然后把你的功能定义为

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

    显然,您可以为Dev、Test和Prod环境设置不同的值,只要它们位于不同的功能应用程序或插槽中。