MQTT 客户端重连(Java paho)

MQTT客户端重连主要有两种方法

第一种:自动重连

设置org.eclipse.paho.client.mqttv3.MqttConnectOptions#setAutomaticReconnect为true

MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);

然后callback实现org.eclipse.paho.client.mqttv3.MqttCallbackExtended,这个接口提供了一个连接完成的回调方法,连接完成后做一些操作,如订阅主题。

public MyMqttCallback implements MqttCallbackExtended {

        /**
         * 连接成功会进入到这里
         * @param reconnect
         * @param serverURI
         */
        @Override
        public void connectComplete(boolean reconnect, String serverURI) {
			// 可以做订阅主题
        }
}

这样当断开连接后,MqttClient内部会自动进行重连,每次连接成功后都会回调connectComplete()方法。

第二种:自定义重连

如果不指定setAutomaticReconnect为true

可以在public void connectionLost(Throwable throwable)中处理重连

@Override
    public void connectionLost(Throwable throwable) {
        System.out.println("失去连接:" + throwable.getMessage());
        int times = 1;
        while (!client.isConnected()) {
            try {
                System.out.println("重新连接, 第" + (times++) + "次");
                client.reconnect();
                System.out.println("重连成功");
                break;
            } catch (MqttException e) {
                e.printStackTrace();
                System.out.println("重连失败, msg:" + e.getMessage());
            }
            // 每隔10秒重试一次
            try {
                TimeUnit.SECONDS.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        // 执行到这里,说明连接成功,重新订阅主题
        xxx
    }

对此笔者对MqttClient做了一个简单封装,可前往查看

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值