Azure Function 错过 IoT 触发器
Azure Function miss IoT trigger
我正在使用 Azure 函数处理来自 IOT 中心的消息并输出到 Blob 存储。
enter image description here
但是当我高频发送时,该功能错过了 IOT 消息。
例如,我从 20:40:16 向 20:40:23 发送了 30 条消息,但只有 3 条消息被处理并存储到 Blob 存储中,我不清楚其余 27 条消息去了哪里。
enter image description here
我正在使用函数消耗计划,Azure 声明它将根据负载自动缩放。
但是从上面的 activity 日志来看,它只有一个线程 运行 并且甚至没有将输入排队并导致一些消息丢失。
那么,我应该怎么做才能捕获来自物联网集线器的所有消息?
消费计划中的 Azure Functions 可以处理此负载,但您可能希望在 IoT 中心创建一个单独的消费者组供 Function 使用。在 Azure 门户中,转到内置端点并添加一个新的使用者组。
然后您必须在函数中指定要使用的消费者组
[FunctionName("Function1")]
public static async Task Run([IoTHubTrigger("messages/events",ConsumerGroup = "functions", Connection = "EventHubConnectionAppSetting")]EventData message,
我使用消费计划函数对此进行了测试,该函数侦听 IoT 中心默认端点并以 8 秒的延迟写入 blob 存储,以使其更像您的函数。无论发送 30 条还是 100 条消息,我都没有看到消息丢失。确保没有其他应用程序正在使用您的新消费者组!
自己找到了解决方案。
触发器需要从 Azure 事件中心更改为事件网格触发器,如下图所示。
Azure Event Hubs
Azure Grid Trigger
我正在使用 Azure 函数处理来自 IOT 中心的消息并输出到 Blob 存储。 enter image description here
但是当我高频发送时,该功能错过了 IOT 消息。 例如,我从 20:40:16 向 20:40:23 发送了 30 条消息,但只有 3 条消息被处理并存储到 Blob 存储中,我不清楚其余 27 条消息去了哪里。 enter image description here
我正在使用函数消耗计划,Azure 声明它将根据负载自动缩放。 但是从上面的 activity 日志来看,它只有一个线程 运行 并且甚至没有将输入排队并导致一些消息丢失。
那么,我应该怎么做才能捕获来自物联网集线器的所有消息?
消费计划中的 Azure Functions 可以处理此负载,但您可能希望在 IoT 中心创建一个单独的消费者组供 Function 使用。在 Azure 门户中,转到内置端点并添加一个新的使用者组。
然后您必须在函数中指定要使用的消费者组
[FunctionName("Function1")]
public static async Task Run([IoTHubTrigger("messages/events",ConsumerGroup = "functions", Connection = "EventHubConnectionAppSetting")]EventData message,
我使用消费计划函数对此进行了测试,该函数侦听 IoT 中心默认端点并以 8 秒的延迟写入 blob 存储,以使其更像您的函数。无论发送 30 条还是 100 条消息,我都没有看到消息丢失。确保没有其他应用程序正在使用您的新消费者组!
自己找到了解决方案。 触发器需要从 Azure 事件中心更改为事件网格触发器,如下图所示。
Azure Event Hubs Azure Grid Trigger