我正在使用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連接的超時時間?