org.eclipse.paho.client MQTTクライアント接続タイムアウト

MQTTクライアント表示のタイムアウトを購読。第2のサービスがうまく再起動する場合がありますが、メッセージを失う可能性があります。

次のように考えます

org.eclipse.paho.client.mqttv3.MqttException:等待来自服务器的响应时超时
        org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31)〜[org.eclipse.pahoで。 client.mqttv3-1.2.1.jar /:!NA] 
        org.eclipse.paho.client.mqttv3.internal.ClientState.checkForActivity(ClientState.java:741)〜[org.eclipse.paho.client.mqttv3-1.2で!.1.jar /:NA] 
        org.eclipse.paho.client.mqttv3.internal.ClientComms.checkForActivity(ClientComms.java:816)で〜[org.eclipse.paho.client.mqttv3-1.2.1.jar! /:]ナ
        !ナ]:[/ org.eclipse.paho.client.mqttv3-1.2.1.jar〜org.eclipse.paho.client.mqttv3.internal.ClientComms.checkForActivity(ClientComms.java:802)で 
        org.eclipse.paho.client.mqttv3.TimerPingSender $ PingTask.run(TimerPingSender.java:79)〜[org.eclipse.paho.client.mqttv3-1.2.1.jar / :!ナ] AT 
        AT java.util.TimerThread.mainLoop(Timer.java:555)〜[NA: 1.8.0_221] 
        [1.8.0_221へ]とjava.util.TimerThread.run(Timer.java:505)

  ソリューション:

 

log.info(「MQTTに接続してみてください」 ); 
//接続コールは、再び)(token.waitForCompletionそれを呼び出す必要があり、これはそれにする必要があります。未知の理由のために。
IMqttTokenトークン= client.connect(connOpts)。
token.waitForCompletion();
log.info( "MQTT成功を接続します")。
client.subscribe(トピック、1、新しいMqttMsgListener());

おすすめ

転載: www.cnblogs.com/zhangyy3/p/11448130.html