如何在没有Etag的情况下设置设备的双子属性?

3

我正在使用API:

RegistryManager.UpdateTwinAsync(string deviceId, Twin twinPatch, string etag);

然而,需要先调用设备的twin:

Twin twin= await _registryManager.GetTwinAsync(deviceId);
var etag = twin.Etag

我需要进行2个I/O调用,这会降低应用程序的性能。

有没有办法在不先获取Etag的情况下设置设备的twin?

谢谢。


在面向服务的设备双元素方面,例如标签和期望属性,可以使用REST PATCH,详见:https://learn.microsoft.com/en-us/rest/api/iothub/service/updatetwin。在初始化设备的情况下,我建议使用registryManager.ImportDevicesAsync作业方法。请注意,设备双元素报告的属性的运行时所有者是面向设备的端点。 - Roman Kiss
1个回答

1
你可以使用DeviceClientUpdateReportedPropertiesAsync,或者如果你想自己序列化数据,可以使用SendEventAsync(Message message)DeviceClientMicrosoft.Azure.Devices.Client库中。
另外,你可以缓存ETag以提高性能(但这取决于你的应用程序如何工作)。

谢谢您的信息!不过,我想使用RegistryManager类来更新属性。 - Phat Huynh
1
然后你需要提供 etag :) - tymtam
你尝试过将 * 作为 ETag 值吗?但请记住,ETag 的存在是为了避免数据丢失,所以请确保这正是你想要的。 - Devis L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接