【问题标题】:IoT Hub message routing with DeviceLifecycleEvents source does not work使用 DeviceLifecycleEvents 源的 IoT 中心消息路由不起作用
【发布时间】:2021-08-07 17:51:10
【问题描述】:

我已在使用 IoT 中心并已配置消息路由以将 TwinChangeEvents 路由到事件中心。带有 EventHubTrigger 的 Azure 函数会处理这些消息。这工作得很好。

现在,我想配置消息路由以将 DeviceLifecycleEvents 路由到另一个事件中心。同样,另一个带有 EventHubTrigger 的 Azure 函数应该处理这些消息。

但是,当我连接或断开设备时,不会触发该功能。 当我将消息路由的数据源更改为TwinChangeEvents时,函数按预期触发(当然是错误消息)。也就是说,我非常有信心我的事件中心和函数的配置是正确的。

另外,我尝试在 IoT 中心配置一个事件订阅,用于事件中心的生命周期事件。我认为这个选项使用事件网格。无论如何,此配置会按预期触发该功能。仅在对生命周期事件使用消息路由时才会出现此问题。

任何人都可以为我指出为什么消息路由不起作用的解决方案吗?我是否缺少 IoT 中心的配置?

【问题讨论】:

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


    【解决方案1】:

    很遗憾,事件中心不支持设备连接和断开连接事件。微软支持也证实了这一点。以下是我从他们那里得到的回复:-

    仅为设备创建和删除事件设计的物联网设备生命周期事件。根据您希望 IoT 中心向事件中心触发以下事件的描述: 设备已创建 设备已删除 设备已连接 设备已断开 根据此要求,您应该使用事件网格创建新的事件订阅,而不是将 IoThub 消息路由与设备生命周期事件配置为数据源。请前往 IoT Hub 并通过此路径新建事件订阅:IoT Hub->Events->+Event Subscription

    最后,我为所有设备生命周期事件创建了一个事件订阅,并将它们路由到我的自定义事件中心端点。我想你也可以这样做,如果你只想订阅事件中心而不是事件网格。

    编辑:- 消息路由现在支持Device connection state events。事件中心消息路由支持Non telemetry events

    最后,如果创建路由时将数据源设置为设备 连接状态事件,IoT Hub 发送一条消息,指示是否 设备已连接或断开连接。

    【讨论】:

    • 在对这两种方法进行更多测试后,我可以确认您不会通过消息路由获得DeviceConnectedDeviceDisconnected 事件(而DeviceCreatedDeviceDeleted 事件有效)。在再次查看微软文档之后,我不得不承认没有任何地方提到你可以通过消息路由获取连接和断开连接的事件。 “设备生命周期事件”显然只意味着创建/删除。
    • 我想关键点是消息路由的“生命周期事件”与事件订阅中的不同。
    • 第二个在你上面的 cmets 上。
    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2023-01-31
    • 2019-08-13
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2018-07-06
    相关资源
    最近更新 更多