带有 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 设备