Azure IoT 中心、EventHub 和函数

2023-11-26

我有一个 IoTHubroute指向触发函数的 EventHub。

我在获取时遇到问题DeviceId以及事件对象中的其他 IoT 中心属性,而无需将这些属性显式添加到负载中。

如果我将输入类型设置为string(或自定义类型):

public static void Run(string iotMessage, TraceWriter log) {
    log.Info($"C# Event Hub trigger function processed a message: {iotMessage}");
}

我只获得有效负载,没有任何其他 IoT 中心属性,例如DeviceId, 相关ID or 消息ID.

我尝试将类型设置为EventData反而:

public static void Run(EventData iotMessage, TraceWriter log) {
    log.Info($"C# Event Hub trigger function processed a message: {JsonConvert.SerializeObject(iotMessage)}");
}

现在我可以通过两个 getter 访问 IoT 中心属性:Properties 和 SystemProperties。例如我可以像这样访问DeviceIdiotMessage.SystemProperties["iothub-connection-device-id"]。但它不会暴露有效负载。

那么如何访问 IoT 中心属性和负载?


如果您除了有效负载之外还需要访问详细的事件属性,那么这是推荐的方法。简单/默认绑定string等在您不需要访问这些事件属性的情况下非常有用。我们的运行时调用EventData.GetBytes()在幕后为您提供帮助,并将数据转换为您指定的输入类型。

不过,我确实认为我们可以做出改进来促进这些场景。我记录了一个错误here在我们的仓库中跟踪这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure IoT 中心、EventHub 和函数 的相关文章

随机推荐