我已经通过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设备呢?
答案 0 :(得分:0)
用于Java的Azure IoT中心SDK似乎不支持X.509设备的多路复用。
您可以在github(https://github.com/Azure/azure-iot-sdk-java/issues)上发布对此功能的要求。