带有 IoT 中心的 Azure Functions 无法检索分区

Posted

技术标签:

【中文标题】带有 IoT 中心的 Azure Functions 无法检索分区【英文标题】:Azure Functions with IoT Hub not able to retrieve partitions 【发布时间】:2020-05-01 13:19:07 【问题描述】:

我在尝试使用 Azure 功能连接到 IoT 中心时收到此错误:

函数“IoTHubDataFunction”的监听器无法启动。 Microsoft.Azure.EventHubs.Processor:获取 EventHub PartitionIds 列表时遇到错误。 System.Private.CoreLib:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。

这是我的函数应用代码。它只是有一个 IoT Hub 触发器和一个使用者组,并记录传入的消息。

[FunctionName("IoTHubDataFunction")]
public static void Run([IoTHubTrigger("messages/events", Connection = "IoTHubTriggerConnection", ConsumerGroup = "funcgroup")]EventData message, ILogger log)

    log.LogInformation($"C# IoT Hub trigger function processed a message: Encoding.UTF8.GetString(message.Body.Array)");

这是我的 local.settings.json 文件


  "IsEncrypted": false,

  "Values": 
    "IoTHubTriggerConnection": "My IoT Hub connection string",
    "AzureWebJobsStorage": "Storage connection string",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  

我正在从 Azure 门户获取 IoT 中心连接字符串:

【问题讨论】:

【参考方案1】:

我不能告诉你你的代码有什么问题,但我可以告诉你这对我有用:

[FunctionName("QueueTrigger")]
        public static void Run(
            [EventHubTrigger("<hubname>", Connection = "hub2", ConsumerGroup = "<optional>")]string myEventHubMessage, 
            ILogger log)
        
            log.LogInformation($" Queue trigger function processed: myEventHubMessage");
        

连接字符串,在我的实例中,在 localsettings.json(或在 Azure 中运行时的环境)中的连接字符串与您提到的相同。本质上,这只是将 IoT 中心视为事件中心。

【讨论】:

【参考方案2】:

尝试以下工作示例:

using IoTHubTrigger = Microsoft.Azure.WebJobs.EventHubTriggerAttribute;
using System.Linq;
//...

[FunctionName("IoTHubDataFunction")]
public static void Run2([IoTHubTrigger("messages/events", Connection = "IoTHubTriggerConnection", ConsumerGroup = "funcgroup")]EventData message, ILogger log)

    log.LogInformation($"\nBody:\n\tEncoding.UTF8.GetString(message.Body.Array)" +
                       $"\nSystemProperties:\n\tstring.Join("\n\t", message.SystemProperties.Select(i => $"i.Key=i.Value"))" +
                       $"\nProperties:\n\tstring.Join("\n\t", message.Properties.Select(i => $" i.Key= i.Value"))");

【讨论】:

【参考方案3】:

有同样的问题。升级 Microsoft.Azure.WebJobs.Extensions.EventHubs 和 Microsoft.Azure.EventHubs.Processor 到最新版本修复了问题。

【讨论】:

以上是关于带有 IoT 中心的 Azure Functions 无法检索分区的主要内容,如果未能解决你的问题,请参考以下文章

Azure IoT 中心 - 使用 IoT 中心将文件从 Azure blob 下载到 IoT 设备

IoT 中心到 Azure Edge

Azure IoT 中心 AMQP 通信多路复用

Azure IoT中心示例ESP8266编译器错误

Windows IoT、IoT 中心、流分析、Azure SQL、Power BI - 啥是正确的路径? [关闭]

从 IoT 中心(Microsoft azure)获取数据的不同方法是啥?