【发布时间】:2018-09-11 20:01:52
【问题描述】:
我正在使用 java paho mqtt。 我想始终保持订阅连接。 我想它会自动连接.. 但是当mqtt服务器关闭或重启后服务器最终正常化时, 客户端(订阅)无法接收任何消息。 怎么了?
public class MqttSubscribe {
MqttClient client;
MqttConnectOptions connOpt;
public MqttSubscribe() {
mqtt_parse = new MqttParser();
connOpt = new MqttConnectOptions();
connOpt.setKeepAliveInterval(30);
connOpt.setCleanSession(true);
connOpt.setConnectionTimeout(2000);
mqttSubConnect();
}
MqttCallback callback = new MqttCallback() {
@Override
public void connectionLost(Throwable arg0) {
System.out.println("connect loss");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mqttSubConnect();
}
@Override
public void deliveryComplete(IMqttDeliveryToken arg0) {
}
@Override
public void messageArrived(String arg0, MqttMessage msg) throws Exception {
System.out.println(msg.toString());
}
};
public void mqttSubConnect() {
try {
client = new MqttClient(
SetDeviceSettingsValue.MQTT_BROKER_IP + ":" + SetDeviceSettingsValue.MQTT_BROKER_PORT,
MqttClient.generateClientId(), new MemoryPersistence());
client.setCallback(callback);
client.connect(connOpt);
client.subscribe(
MqttTopic.MainTopic+"/"+ MqttJsonHeaderValue.DEVICE_MAC_ADDRESS+"/"+MqttTopic.ControlTopic,
MqttQos.MQTT_QOS_2);
} catch (MqttException e) {
}
}
}
【问题讨论】: