【发布时间】:2020-06-18 21:49:15
【问题描述】:
我正在使用 Azure 功能来处理来自 IOT 中心的消息并输出到 Blob 存储。 enter image description here
但是当我高频发送时,该功能错过了 IOT 消息。 例如,我从 20:40:16 到 20:40:23 发送了 30 条消息,但只有 3 条被处理并存储到 Blob 存储中,其余 27 条我不知道去哪里。 enter image description here
我正在使用函数消耗计划,Azure 声明它将根据负载自动缩放。 但是从上面的活动日志来看,它只有一个线程在运行,甚至没有对输入进行排队,导致一些消息丢失。
那么,我应该怎么做才能捕获来自 IOT hub 的所有消息?
【问题讨论】:
-
如果没有看到您的代码,很难确定消息是否真的丢失了或者您有错误。您是否知道您可以在 IoT 中心设置路由规则并让它自动将所有设备遥测数据写入 Blob 存储?
-
我确信这些消息已到达 Azure,因为我可以在 ServiceBusExplorer 中看到它们。在我的情况下可能无法执行路由规则,因为我将无法采用 JSON 格式的二进制数据发送到 Azure,这也是为什么我需要函数来解码我的消息而不是保存到 Blob
-
这又发生了吗?还是这是您第一次观察到这种行为?
-
嗨 SatishBoddu,根据我的观察,当物联网消息接收频率高于函数处理速度时,这种情况一直发生。在我看来,该函数始终是单线程并且从不缓冲输入。这是应该的消费计划还是我的设置问题?
标签: azure azure-functions azure-iot-hub