引入的包是:org.eclipse.paho.client.mqttv3
在测试emqx功能时,在消费者接收消息之后故意抛出异常,让emqx进行重连功能
/**
** 客户端收到消息触发*
** @param topic 主题*
** @param mqttMessage 消息*
/
@Override
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
log.error("=========故意抛出异常测试重连============== " + topic);
throw new Exception("=========故意抛出异常测试重连==============");
/ log.info("接收消息回调: 接收消息主题 : " + topic);
log.info("接收消息回调: 接收消息内容 : " + new String(mqttMessage.getPayload()));/*
}
已经设置了自动重连功能
options.setAutomaticReconnect(true);
在进行重连时过了几秒就报错
已断开连接 (32109) - java.io.EOFException
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:190)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:92)
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:137)
... 1 more
重连代码
解决办法
发现是clientid冲突所致,就是不能有2个一样的clientid同时订阅到一个主题,那就随便修改一下clientid跟之前已经在订阅的不一样就可以了