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());