java110
2023-05-16 d516e38fd44e186f393bbb05c4e7ca34b323b609
java110-core/src/main/java/com/java110/core/trace/Java110TraceFactory.java
@@ -3,10 +3,9 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.trace.TraceAnnotationsDto;
import com.java110.dto.trace.TraceDto;
import com.java110.dto.trace.TraceEndpointDto;
import com.java110.dto.trace.*;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.EnvironmentConstant;
import com.java110.utils.factory.ApplicationContextFactory;
import com.java110.utils.kafka.KafkaFactory;
import com.java110.utils.util.DateUtil;
@@ -100,7 +99,7 @@
        String parentId = "";
        if (headers.containsKey(CommonConstant.TRACE_ID)) { //先取trace Id
            traceId = headers.get(CommonConstant.TRACE_ID).toString();
        }else if (headers.containsKey(CommonConstant.TRANSACTION_ID)) {
        } else if (headers.containsKey(CommonConstant.TRANSACTION_ID)) {
            traceId = headers.get(CommonConstant.TRANSACTION_ID).toString();
        } else {
            traceId = GenerateCodeFactory.getUUID();
@@ -115,6 +114,12 @@
    public static String createTrace(String name, String traceId, String parentId, String event) {
        //初始事件
        Environment environment = (Environment) ApplicationContextFactory.getBean(Environment.class);
        //判断调用链是否打开
        if (!EnvironmentConstant.TRACE_SWITCH_ON.equals(environment.getProperty(EnvironmentConstant.TRACE_SWITCH))) {
            return "";
        }
        //全局事务开启者
        TraceDto traceDto = new TraceDto();
        traceDto.setId(GenerateCodeFactory.getUUID());
@@ -122,8 +127,6 @@
        traceDto.setParentSpanId(parentId);
        traceDto.setTimestamp(DateUtil.getCurrentDate().getTime());
        //初始事件
        Environment environment = (Environment) ApplicationContextFactory.getBean(Environment.class);
        TraceAnnotationsDto traceAnnotationsDto = new TraceAnnotationsDto();
        TraceEndpointDto traceEndpointDto = new TraceEndpointDto();
        traceEndpointDto.setServiceName(environment.getProperty("spring.application.name"));
@@ -145,9 +148,34 @@
        traceAnnotationsDtos.add(traceAnnotationsDto);
        traceDto.setAnnotations(traceAnnotationsDtos);
        traceDto.setTraceId(traceId);
        traceDto.setDbs(new ArrayList<>());
        put(traceDto.getId(), traceDto);
        putSpanId(SPAN_ID, traceDto.getId());
        return traceDto.getId();
    }
    /**
     * 添加参数
     *
     * @param traceParamDto
     */
    public static void putParams(TraceParamDto traceParamDto) {
        TraceDto traceDto = getTraceDto();
        if (traceDto == null) {
            return;
        }
        //如果存在 则跳过
        if (traceDto.getParam() != null) {
            return;
        }
        traceDto.setParam(traceParamDto);
        put(getSpanId(SPAN_ID), traceDto);
    }
    /**
@@ -200,6 +228,26 @@
    }
    /**
     * 添加db
     *
     * @param sql
     */
    public static void putDbs(String sql, String param, long duration) {
        TraceDto traceDto = getTraceDto();
        if (traceDto == null) {
            return;
        }
        List<TraceDbDto> dbs = traceDto.getDbs();
        TraceDbDto traceDbDto = new TraceDbDto();
        traceDbDto.setDbSql(sql);
        traceDbDto.setParam(param);
        traceDbDto.setDuration(duration+"");
        dbs.add(traceDbDto);
        traceDto.setDbs(dbs);
    }
    /**
     * 清理事务
     */
    public static void clearTrace(String spanId) {