我正在使用MQTT 的 IA92 Java 实现,它允许我连接到 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 连接的超时时间呢?