如果消费者端接受消息处理时出现异常情况(停电等),如何再次发送消息

就是如果我用java对接EMQX, 订阅主题并消费, 发布者和消费者的QOS都设置为2

流程
发布者->EMQX->消费者(可能会出现异常)

消费端能收到消息是没错, 但是如果我消费者端处理消息的逻辑出错了(或者处理消息时消费者崩掉了),需要EMQX再次发送消息到消费者再次处理,该怎么实现,我发现消费者的 public void messageArrived(String topic, MqttMessage message) 只要收到消息, EMQX就当消息被消费了, 如果我这块逻辑出现异常,或者执行中停电啥的,消息不就算丢失了? 这种情况各位是怎么处理的

我试过收到A消息后在messageArrived方法上抛出异常,客户端断开连接并重连后也不会再次收到A消息,这样A消息不就算丢失了?

从协议的角度来说,需要中断 QoS2消息的的发布流程。 EMQX 才会重新投递的这个消息的。

可以看看 SDK 里面是什么时回复 QoS2 消息的 PUBREC 的,需要中断这个