Azure IoT中心Java SDK,连接通过单个AMQP连接多路复用的X.509设备

时间:2018-06-28 11:59:07

标签: azure-iot-hub azure-iot-sdk azure-iot-hub-device-management

我已经通过Azure IoT DPS自动配置了许多IoT设备。这些设备已在我的IoT中心注册。所有设备都具有X.509证书身份验证。

我现在要做的是将消息发送到设备。所有证书均可用,我可以将DeviceClient连接到集线器上的设备。这是我正在使用的Azure IoT Java SDK的方法:

public static DeviceClient createFromSecurityProvider(String uri, String deviceId, SecurityProvider securityProvider, IotHubClientProtocol protocol) throws URISyntaxException, IOException

SecurityProviderX509Cert 作为参数。

但是,每个DeviceClient都有自己的物理连接。我想要的是通过使用以下构造函数来使用AMQP复用:

public DeviceClient(String connString, TransportClient transportClient) throws URISyntaxException

这不适用于X.509设备。在连接字符串中,我使用了来自集线器的共享访问策略中的共享访问密钥,但有一个例外:

未经授权:位于IotHub'yyy'的设备'xxx'没有PrimaryKey或SecondaryKey

我假设只有在使用对称密钥注册设备后才能使用。但是,这些设备无法通过Azure DPS自动注册。我只能使用X.509或TPM注册设备。

那么,如何通过一个AMQPS连接来连接多个X.509设备呢?

1 个答案:

答案 0 :(得分:0)

用于Java的Azure IoT中心SDK似乎不支持X.509设备的多路复用。

您可以在github(https://github.com/Azure/azure-iot-sdk-java/issues)上发布对此功能的要求。