如何解决此问题mqtt Paho超时但未报告连接丢失

问题描述:

我的服务使用paho mqtt时出现问题。它超时但没有连接丢失的报告。有没有人有解决这个问题的办法?如何解决此问题mqtt Paho超时但未报告连接丢失

public void connect(String client_id) { 
     String tmpDir = System.getProperty("java.io.tmpdir"); 
     MqttDefaultFilePersistence dataStore = new MqttDefaultFilePersistence(tmpDir); 

     MqttConnectOptions options = new MqttConnectOptions(); 
     options.setKeepAliveInterval(120); 



     try { 
      _client = new MqttClient(_url, MqttClient.generateClientId(), dataStore); 
      _client.connect(options); 
      _client.setCallback(this); 

      _client.subscribe(TOPIC); 
      LOGGER.info("Subscribed to " + Arrays.toString(TOPIC)); 
      LOGGER.info("MAX CORES " + MAX_CORES); 

     } catch (MqttException e) { 
      LOGGER.log(Level.INFO, "Mosquitto Error: " + e.fillInStackTrace()); 
      connect(null); 
     } 
    } 



    @Override 
    public void messageArrived(final String topic, final MqttMessage message) throws Exception { 
     threadPool.execute(new Runnable(){// code}); 
    } 

使用MQTT v 1.0.0

Nov 6, 2015 2:36:52 AM org.eclipse.paho.client.mqttv3.internal.ClientState checkForActivity 
SEVERE: paho-595916529752865: Timed out as no activity, keepAlive=120,000 lastOutboundActivity=1,446,777,172,455 lastInboundActivity=1,446,777,117,734 time=1,446,777,412,455 lastPing=1,446,777,172,454 
+0

你将不得不给我们一些更多的上下文给任何人来帮助。诸如此类,它是否超时作为连接的一部分,或者经过一段时间不发送数据之后?您设置了什么KeepAlive期限? – hardillb

+0

原来是60秒,现在我改为120秒 – david

+0

在这个问题上有什么好运? –

由于速战速决

刚刚设置:

setConnectionTimeout(0)使用零将禁用超时。

setConnectionTimeout public void setConnectionTimeout(int connectionTimeout)设置连接超时值。以秒为单位测量的该值 定义了客户端将等待建立到MQTT服务器的网络连接的最大时间间隔。 默认的超时时间是30秒。值为0会禁用超时 处理意味着客户端将等待,直到网络连接 成功或失败。参数:connectionTimeout - 超时值,以秒为单位。它必须> 0;

希望它能帮上忙。