gpt4 book ai didi

java - 如何为 MQTT 客户端设置超时?

转载 作者:行者123 更新时间:2023-11-30 09:50:18 25 4
gpt4 key购买 nike

我正在使用 IA92 Java implementation for MQTT ,它允许我连接到 MQTT 代理。为了建立连接,我正在做这样的事情:

// Create connection spec
String mqttConnSpec = "tcp://the_server@the_port";
// Create the client and connect
mqttClient = MqttClient.createMqttClient(mqttConnSpec, null);
mqttClient.connect("the_id", true, 666);

问题是有时服务器发送响应的时间太长,会抛出超时异常:

org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocket(OSNetworkSystem.java:130)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:246)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:533)
at java.net.Socket.connect(Socket.java:1055)
at com.ibm.mqtt.j2se.MqttJava14NetSocket.<init>((null):-1)
at com.ibm.mqtt.j2se.MqttJavaNetSocket.setConnection((null):-1)
at com.ibm.mqtt.Mqtt.tcpipConnect((null):-1)
at com.ibm.mqtt.MqttBaseClient.doConnect((null):-1)
at com.ibm.mqtt.MqttBaseClient.connect((null):-1)
at com.ibm.mqtt.MqttClient.connect((null):-1)
at com.ibm.mqtt.MqttClient.connect((null):-1)

我需要做的是手动设置超时,而不是让 mqtt 客户端决定。文档说:还有一些方法可以设置 MQ 遥测传输连接的属性,例如超时和重试。

但是,老实说,我还没有找到任何相关信息。我查看了整个 javadoc 引用,没有超时配置的证据。我看不到源代码,因为它不是开源的。

那么如何设置Mqtt连接的超时时间呢?

最佳答案

如果您感到困惑,可以转到 MqttConnectionOptions 了解详细信息。

    String userName="Ohelig";
String password="Pojke";
MqttClient client = new MqttClient("tcp://192.168.1.4:1883","Sending");
MqttConnectOptions authen = new MqttConnectOptions();
authen.setUserName(userName);
authen.setPassword(password.toCharArray());
authen.setKeepAliveInterval(30);
authen.setConnectionTimeout(300);

client.connect(authen);

关于java - 如何为 MQTT 客户端设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com