diff --git a/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java b/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java index 523e18249..607c80619 100644 --- a/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java +++ b/designer-base/src/main/java/com/fr/design/record/analyzer/advice/MonitorAdvice.java @@ -1,15 +1,14 @@ package com.fr.design.record.analyzer.advice; -import com.fr.concurrent.FineExecutors; -import com.fr.concurrent.NamedThreadFactory; import com.fr.design.record.analyzer.DesignerAnalyzerAdvice; import com.fr.general.GeneralUtils; +import com.fr.intelli.measure.Estimator; import com.fr.intelli.metrics.Compute; -import com.fr.intelli.metrics.RecordTask; import com.fr.intelli.metrics.SupervisoryConfig; import com.fr.intelli.record.Measurable; import com.fr.intelli.record.MeasureObject; import com.fr.intelli.record.MeasureUnit; +import com.fr.intelli.record.MetricRegistry; import com.fr.measure.DBMeterFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; @@ -26,7 +25,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; -import java.util.concurrent.ExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -37,8 +35,6 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice { private static final Pattern P = Pattern.compile("-?\\d+"); private static final int MIN_ERROR_CODE = 10000000; - public static ExecutorService executorService = FineExecutors.newCachedThreadPool(new - NamedThreadFactory(MonitorAdvice.class)); @Advice.OnMethodEnter public static void onMethodEnter(@Advice.Origin Method method, @@ -88,8 +84,22 @@ public class MonitorAdvice implements DesignerAnalyzerAdvice { if (provider != null) { sessionID = provider.getSessionID(); } - RecordTask task = new RecordTask(measurable, measureObject, sessionID, newArgs); - executorService.submit(task); + if (measurable instanceof Estimator) { + measurable.asyncDurable(measureObject, newArgs.toArray()); + } else { + Object message; + try { + message = measurable.durableEntity(measureObject, newArgs.toArray()); + } catch (Throwable throwable) { + //埋点生成失败,降级逻辑 + message = measurable.fallBackEntity(); + } + if (StringUtils.isEmpty(sessionID)) { + MetricRegistry.getMetric().submit(message); + } else { + MetricRegistry.getMetric().submitAccumulativeData(sessionID, message); + } + } } } catch (Exception ignore) { //埋点信息入库失败应该不能影响业务流程