开发Azure Function版本2时如何在local.settings.json中配置'ConsumerGroup`

时间:2019-01-18 09:46:10

标签: azure azure-functions azure-functions-core-tools

我有以下代码来捕获所有到达IoT Hub的消息

    [FunctionName("device-message--funcapp-v2")]
    public static void Run([IoTHubTrigger("testhub", 
                       Connection = "IoTHubEventEndPoint", 
                       ConsumerGroup = "ActualConsumerGroup")]EventData message, 
        ILogger log)
    {
        log.LogInformation($"C# IoT Hub trigger:
       {Encoding.UTF8.GetString(message.Body.Array)}");     
    }

这可以正常工作,但是现在我不想对ConsumerGroup进行硬编码。所以我在local.settings.json

的配置项下面添加了
   {
     "IsEncrypted": false,
     "Values": {
          "AzureWebJobsStorage": "",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet",
          "EventHub": "",
          "CosmosDb": "",
         "ConfigurationConsumerGroup": "ActualConsumerGroup"
          }
        }

并更改了以下代码

       [FunctionName("device-message--funcapp-v2")]
    public static void Run([IoTHubTrigger("testhub", 
        Connection = "IoTHubEventEndPoint", 
        ConsumerGroup = "ConfigurationConsumerGroup")]EventData message, 
        ILogger log)

但是失败了。

  

[1/18/2019 9:47:11 AM] Microsoft.Azure.EventHubs:找不到消息传递实体“ iothub-ns-testhub-945897-3a6f492cc4:eventhub:lctesthub〜8191 | ConfigurationConsumerGroup”。

1 个答案:

答案 0 :(得分:0)

使用ConsumerGroup = "%ConfigurationConsumerGroup%"从local.settings.json中读取设置。检查doc。请注意,触发器和绑定的连接属性是一种特殊情况,它会自动将值解析为应用程序设置,而没有百分号。