Mqtt 物联网 spring 连接即断开 报错(32109) - java.io.EOFException

项目场景:Mqtt 物联网 spring 连接即断开

mqtt : org.eclipse.paho.client.mqttv3.MqttException
spring : 3.0.2
spring 集成

问题描述

spring 在启动时就同时启动MQTT监听连接。
连接后立马报 MQTT断开连接((32109) - java.io.EOFException)的错误
并且如果设置了自动重连的话会导致每次重连后都报一次错误导致每次错误都进行一次重新连接。
但这个断开的报错实际上并没有导致mqtt服务端断开,事实上还是有客户端连接的
/**
* 启动项目时同时启动MQTT监听
*/
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
mqttClient = new MqttClient(MQTTConfig.mHost, mClientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
mqttClient.setCallback(mqttCallback);
mqttClient.connect(options);
}


原因分析:

可能是依赖冲突或者监听顺序机制。原因尚不明确

解决方案:

解决方案重写connectionLost方法
并且对连接处理加上锁和是否建立连接判断
不加锁的话会导致报错比连接的反馈快一步
导致!getMqttClient().isConnected() 为true
而进行二次连接
在这里插入图片描述

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值