Java中IotHub设备注册的异步编程



我目前正在尝试实现Java web服务(Rest API(,其中端点在IoTHub中创建设备并更新设备对。

azure iot sdk中提供了两种方法。一种是

addDevice(设备ID,身份验证类型(

和另一个是

addDeviceAsync(设备ID,身份验证类型(

我只是想弄清楚我应该在web服务中使用哪一个(作为最佳实践(。我在多线程/并发方面不是很强,所以想了解一下人们在这方面的专业知识。非常感谢任何与此相关的建议/链接

谢谢。

AddDevice的异步版本基本相同。如果您使用AddDeviceAsync,则会创建一个线程来运行AddDevice调用,这样您就不会被阻止。

检查RegistryManager的代码#L269,正是这样做的:https://github.com/Azure/azure-iot-sdk-java/blob/master/service/iot-service-client/src/main/java/com/microsoft/azure/sdk/iot/service/RegistryManager.java#L269

public CompletableFuture<Device> addDeviceAsync(Device device) throws IOException, IotHubException
{
if (device == null)
{
throw new IllegalArgumentException("device cannot be null");
}
final CompletableFuture<Device> future = new CompletableFuture<>();
executor.submit(() ->
{
try
{
Device responseDevice = addDevice(device);
future.complete(responseDevice);
}
catch (IOException | IotHubException e)
{
future.completeExceptionally(e);
}
});
return future;
}

您还可以构建自己的异步包装器,并从中调用AddDevice((。

最新更新