azure - 将设备到云消息发送到 IoTHub 时,是否可以重用 Azure Functions 上的连接?

标签 azure azure-functions azure-iot-hub azure-eventhub

我有一个 Azure IoTHub,注册了数千台设备。这些设备通过电信提供商进行通信,电信提供商通过 Azure 存储队列发送消息。此存储队列触发一个 Azure 函数,该函数需要解析消息并将事件发送到 IoTHub,如下所示。 enter image description here

目前,我们使用 Azure IoTHub SDK 为每个负载创建一个 DeviceClient 并发送事件。由于 DeviceClient 代表 IoTHub 中的设备并携带事件源的上下文,因此我们必须为每个事件重新创建一个设备客户端。这很快就超过了 Azure Functions 上允许的连接数阈值。

我们已尝试使用 Azure Functions 的 IoTHub 输出绑定(bind),但无法正常工作,而且我认为这不会起作用,因为我们需要确保事件以正确的上下文到达 IoTHub(发送消息)通过正确的设备)。

解决这个问题的正确方法是什么? IoTHub 的连接可以重复使用吗?我们应该放弃 Azure Function 而选择其他东西吗?

最佳答案

我假设 Telco 是某种自定义设备管理解决方案(供应商锁定解决方案),它还可以与设备通信并接收设备遥测数据,并最终将其转发到指定端点,对吗?

如果我可以问一下,如果我的假设是正确的,如果您不通过 IoT 中心管理电信设备(图表上的箭头仅朝一个方向),为什么需要将事件传递到 IoT 中心?

如果将 IoT 中心用作本质上云到云通信的消息代理,那么如果这是唯一目的,那么这并没有什么好处。从概念上讲,您所描述的是云到云通信,而 IoT 中心旨在用于设备。

这就是我要做的。 Setup API 管理(或 http 触发的 Azure 功能)作为 Telco 的前门,并将消息传递到事件中心。 您可以在此处选择传递请求正文,例如您的遥测数据所在的位置 - 我再次假设。

保留 IoT 中心,并设置到之前创建的事件中心的路由。

现在,如果您的设备未由供应商锁定并且可以直接与 IoT 中心通信,则消息将重新路由到事件中心。此外,电信设备消息将被路由到完全相同的事件中心。

现在,您可以使用 Azure 流分析来分析来自事件中心的数据流,以及电信设备和潜在的非电信设备的数据流。

关于azure - 将设备到云消息发送到 IoTHub 时,是否可以重用 Azure Functions 上的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58247973/

相关文章:

python - 使用 python 脚本登录 azure cli 时出现问题

c# - 如何在不将客户端 key 存储在 appsettings.json 中的情况下获取 Azure Key Vault key ?

azure - 无法创建 IoT 中心

c# - 'dotnet publish' 命令行跳过部署到 Azure Functions

c# - 天蓝色函数 : How to access the host key programmatically using C# code?

azure - 如何在您的curl请求中指示您需要在Azure IoT中心使用的路由?

x509certificate - 没有 SDK 的设备注册(使用 DPS)和设备到物联网集线器通信

azure - 当对 Linux Web 应用程序使用 Azure DevOps CI/CD 时,如何将构建工件压缩并仅作为 zip 文件发布,而不是复制到目录

azure - 在Windows Azure中安装服务

c# - Azure 解决方案设计指南