我正在使用IA92 Java implementation for MQTT,它允许我连接到MQTT代理。为了建立连接,我在做这样的事情:如何设置MQTT客户端的超时时间?
// Create connection spec
String mqttConnSpec = "tcp://[email protected]_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连接的超时时间?