私は、azure iot-device-client SDKバージョン1.3.31を使用して、MQTTプロトコル経由でiotハブに接続し、メッセージを送信する多くのデバイスをシミュレートする小さなアプリケーションを作成しようとしています。最終的にはマルチスレッド化され、数千のシミュレートされたデバイスが同時に接続されます。これはデバイスクライアントsdkでは可能ではないようです。デバイスsdkをこのように使用できますか?Azure iotデバイスsdkは複数のデバイスを同時に接続できますか?
IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
List<String> conns = new ArrayList<>();
//conns.add() 10 times with correct connection strings
conns.forEach((newConnString) -> {
try {
DeviceClient client = new DeviceClient(newConnString, protocol);
client.open();
System.out.println("connected - "+newConnString);
} catch (Exception e) {
e.printStackTrace();
}
});
私はこれを実行すると、私は残りの部分は、このエラーでforcably切断取得と接続する他のすべてのデバイスを取得:MQTTプロトコルの場合
java.io.IOException: Unable to subscribe to topic :devices/sim_3/messages/devicebound/# because java.io.EOFExceptionConnection lost at com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection.open(MqttIotHubConnection.java:140) at com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttTransport.open(MqttTransport.java:83) at com.microsoft.azure.sdk.iot.device.DeviceIO.open(DeviceIO.java:212) at com.microsoft.azure.sdk.iot.device.DeviceClient.open(DeviceClient.java:197) at com.company.Main.lambda$main$0(Main.java:49) at java.util.ArrayList.forEach(ArrayList.java:1249) at com.company.Main.main(Main.java:45)
私はそれぞれに異なるDEVICEID /資格情報を提供しそうであるように、各DeviceClientが別々のMQTT接続を行うという前提の下にありました。また、AMQPでサポートされていないデバイスのツインとメソッドのメッセージにもアクセスしたいと考えています。 – darrickc