Java Eclipse Paho实现 – 自动重新连接

我正在尝试在我的项目中实现eclipse.paho来连接Mqtt Broker(订阅和发布目的)。 问题是,当我使用订阅function(实现MqttCallback接口)时,我无法MqttCallback如果连接丢失,我该如何重新连接。 MqttCallback接口有一个connectionLost方法,但它对调试很有用,导致连接丢失。 我搜索但找不到建立自动重新连接的方法。 你能就这个问题提出一个方法或文件吗?

提前致谢。

执行此操作的最佳方法是构造连接逻辑,使其位于自己的方法中,以便可以从MqttCallback实例中的connectionLost回调中再次调用它。

connectionLost方法传递一个Throwable,它将是触发断开连接的exception,因此您可以决定根本原因以及在重新连接时如何影响。

连接方法应连接并订阅您需要的主题。

像这样的东西:

 public class PubSub { MqttClient client; String topics[] = ["foo/#", "bar"]; MqttCallback callback = new MqttCallback() { public void connectionLost(Throwable t) { this.connect(); } public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("topic - " + topic + ": " + new String(message.getPayload())); } public void deliveryComplete(IMqttDeliveryToken token) { } }; public static void main(String args[]) { PubSub foo = new PubSub(); } public PubSub(){ this.connect(); } public void connect(){ client = new MqttClient("mqtt://localhost", "pubsub-1"); client.setCallback(callback); client.connect(); client.subscribe(topics); } } 

要使用自动重新连接,只需在MqttConnectOptions对象上设置setAutomaticReconnect(true)

 MqttAndroidClient mqttClient = new MqttAndroidClient(context, mqttUrl, clientId); MqttConnectOptions mqttConnectOptions = new MqttConnectOptions(); mqttConnectOptions.setAutomaticReconnect(true); mqttClient.connect(mqttConnectOptions, null, mqttActionListener());