package com.huaxia.imes.mqtt;

import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
/**
 * @author zx
 * @since 2024年11月13日
 * @Description 消费者回调
 */
@Slf4j
public class MqttConsumerCallBack implements MqttCallback {

    /**
     * 连接丢失
     * @param throwable
     */
    @Override
    public void connectionLost(Throwable throwable) {

        log.error("连接断开异常{}",throwable.getMessage());

    }

    /**
     * 消息到达
     * @param s
     * @param mqttMessage
     * @throws Exception
     */
    @Override
    public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
         log.info("收到消息主题信息:{}",s);
         log.info("收到消息内容:{}",new String(mqttMessage.getPayload()));
         log.info("收到消息质量:{}",mqttMessage.getQos());
         log.info("收到消息是否重复:{}",mqttMessage.isDuplicate());
         log.info("收到消息是否已发布:{}",mqttMessage.isRetained());

    }

    /**
     * 消息发布成功的回馈
     * @param iMqttDeliveryToken
     */
    @Override
    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
        log.info("发布完成客户端信息{}", iMqttDeliveryToken.getClient());
        log.info("发布完成主题信息{}", (Object) iMqttDeliveryToken.getTopics());
        log.info("发布完成消息id{}", iMqttDeliveryToken.getMessageId());

    }
}