首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure物联网设备sdk支持同时连接多个设备吗?

Azure物联网设备sdk支持同时连接多个设备吗?
EN

Stack Overflow用户
提问于 2017-07-22 03:01:28
回答 2查看 1.3K关注 0票数 0

我正在尝试编写一个小应用程序来模拟许多设备通过MQTT协议连接和发送消息到物联网集线器,使用azure物联网设备-设备-客户端sdk版本: 1.3.31。最终,这将是多线程,它将有数千个模拟设备同时连接。这在设备客户端sdk看来是不可能的。设备sdk可以这样使用吗?

代码语言:javascript
复制
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();
    }
});

当我运行这个程序时,我会看到与其他设备连接的所有设备都会因为这个错误而被迫断开连接:

无法订阅主题:设备/sim_3/messages/devicebound/#,因为在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) atcom.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)

EN

回答 2

Stack Overflow用户

发布于 2017-07-24 07:55:39

除了Rita的答案之外,我还建议为每个模拟MQTT设备使用自己的AppDomain和轻量级(raw) MQTT客户端库(例如M2Mqtt)。这个概念已在Azure IoT集线器测试仪中使用,其中每个MQTT设备被隔离、托管、订阅并在自己的AppDomain中发布。下面的屏幕片段显示了连接到Azure IoT集线器的30个虚拟MQTT设备:

票数 2
EN

Stack Overflow用户

发布于 2017-07-24 05:43:31

对于MQTT协议,不支持在同一个TLS连接上同时连接多个设备。

IoT集线器只支持每个设备一个活动的MQTT连接。代表同一设备ID的任何新的MQTT连接都会导致IoT集线器删除现有连接。

对于用例,可以选择AMQP。它支持跨设备的连接多路复用。

参考文献:选择通信协议.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45250232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档