我正在嘗試編寫一個小應用程序來模擬許多設備使用azure iot-device-client sdk版本連接並通過MQTT協議將消息發送到iot集線器:1.3.31。最終這將是多線程的,它將有數以千計的模擬設備同時連接。這對設備客戶端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斷開與此錯誤連接所有其他設備:
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)
我的假設是每個DeviceClient將進行單獨的MQTT連接,我確實提供針對每個不同的DeviceID /憑證下。此外,我們希望訪問不通過AMQP支持的設備信息和方法信息。 – darrickc