diff --git a/.artifacts b/.artifacts
index be912a56f7..aa865b891a 100644
--- a/.artifacts
+++ b/.artifacts
@@ -66,6 +66,7 @@ dubbo-metrics-prometheus
dubbo-metrics-registry
dubbo-metrics-config-center
dubbo-metrics-netty
+dubbo-metrics-event
dubbo-monitor
dubbo-monitor-api
dubbo-monitor-common
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
index 31c3af53f2..496e4369b2 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java
@@ -60,7 +60,6 @@ import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY;
-import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK;
import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.same;
diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml
index 89e2b77abc..c2e4b05633 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -190,6 +190,13 @@
+
+ org.apache.dubbo
+ dubbo-metrics-event
+ ${project.version}
+ compile
+ true
+
org.apache.dubbo
dubbo-metrics-api
@@ -690,6 +697,7 @@
org.apache.dubbo:dubbo-metadata-report-nacos
org.apache.dubbo:dubbo-metadata-report-redis
org.apache.dubbo:dubbo-metadata-report-zookeeper
+ org.apache.dubbo:dubbo-metrics-event
org.apache.dubbo:dubbo-metrics-api
org.apache.dubbo:dubbo-metrics-default
org.apache.dubbo:dubbo-metrics-registry
diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml
index 9757c56352..bf3b0d3110 100644
--- a/dubbo-distribution/dubbo-bom/pom.xml
+++ b/dubbo-distribution/dubbo-bom/pom.xml
@@ -251,6 +251,11 @@
dubbo-metrics-api
${project.version}
+
+ org.apache.dubbo
+ dubbo-metrics-event
+ ${project.version}
+
org.apache.dubbo
dubbo-metrics-default
diff --git a/dubbo-metrics/dubbo-metrics-api/pom.xml b/dubbo-metrics/dubbo-metrics-api/pom.xml
index 3c31ae389c..3ee341dcba 100644
--- a/dubbo-metrics/dubbo-metrics-api/pom.xml
+++ b/dubbo-metrics/dubbo-metrics-api/pom.xml
@@ -36,6 +36,11 @@
dubbo-common
${project.parent.version}
+
+ org.apache.dubbo
+ dubbo-metrics-event
+ ${project.parent.version}
+
org.apache.dubbo
dubbo-rpc-api
diff --git a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
index 450da8a7c6..9fd5257cc5 100644
--- a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
+++ b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java
@@ -19,7 +19,10 @@ package org.apache.dubbo.metrics.collector;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.constants.CommonConstants;
+import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
+import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metrics.MetricsConstants;
import org.apache.dubbo.metrics.TestMetricsInvoker;
import org.apache.dubbo.metrics.event.MetricsDispatcher;
import org.apache.dubbo.metrics.event.RequestEvent;
@@ -134,6 +137,9 @@ class DefaultCollectorTest {
DefaultMetricsCollector collector = applicationModel.getBeanFactory().getOrRegisterBean(DefaultMetricsCollector.class);
collector.setCollectEnabled(true);
+ ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(DefaultCollectorTest.class);
+ logger.warn("0-99","","","Test error code message.");
+
metricsFilter.invoke(new TestMetricsInvoker(side), invocation);
try {
Thread.sleep(50);
@@ -150,8 +156,8 @@ class DefaultCollectorTest {
// push finish rt +1
List metricSamples = collector.collect();
- //num(total+success+processing) + rt(5) = 8
- Assertions.assertEquals(8, metricSamples.size());
+ //num(total+success+processing) + rt(5) + error code = 9
+ Assertions.assertEquals(metricSamples.size(),9);
List metricsNames = metricSamples.stream().map(MetricSample::getName).collect(Collectors.toList());
// No error will contain total+success+processing
String REQUESTS = new MetricsKeyWrapper(METRIC_REQUESTS, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey();
@@ -192,8 +198,8 @@ class DefaultCollectorTest {
long c2 = eventObj.getTimePair().calc();
metricSamples = collector.collect();
- // num(total+success+error+total_error+processing) + rt(5) = 5
- Assertions.assertEquals(10, metricSamples.size());
+ // num(total+success+error+total_error+processing) + rt(5) + error code = 11
+ Assertions.assertEquals(11, metricSamples.size());
String TIMEOUT = new MetricsKeyWrapper(METRIC_REQUESTS_TIMEOUT, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey();
String TOTAL_FAILED = new MetricsKeyWrapper(METRIC_REQUESTS_TOTAL_FAILED, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey();
diff --git a/dubbo-metrics/dubbo-metrics-event/pom.xml b/dubbo-metrics/dubbo-metrics-event/pom.xml
new file mode 100644
index 0000000000..4db769019c
--- /dev/null
+++ b/dubbo-metrics/dubbo-metrics-event/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+ org.apache.dubbo
+ dubbo-metrics
+ ${revision}
+ ../pom.xml
+
+ dubbo-metrics-event
+ jar
+ ${project.artifactId}
+ The metrics event-related api module of dubbo project
+
+ false
+
+
+
+
+ org.apache.dubbo
+ dubbo-common
+ ${project.parent.version}
+
+
+
+
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java
similarity index 86%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java
index 3b22dfa818..b0e587a396 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java
+++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java
@@ -19,7 +19,6 @@ package org.apache.dubbo.metrics.event;
import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
import org.apache.dubbo.metrics.exception.MetricsNeverHappenException;
-import org.apache.dubbo.metrics.model.MethodMetric;
import org.apache.dubbo.metrics.model.key.TypeWrapper;
import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -33,13 +32,13 @@ import java.util.Map;
public abstract class MetricsEvent {
/**
- * Metric object. (eg. {@link MethodMetric})
+ * Metric object. (eg. MethodMetric)
*/
protected transient final ApplicationModel source;
private boolean available = true;
private final TypeWrapper typeWrapper;
private final String appName;
- private final MetricsDispatcher metricsDispatcher;
+ private final MetricsEventMulticaster metricsEventMulticaster;
private final Map attachments = new IdentityHashMap<>(8);
@@ -47,7 +46,7 @@ public abstract class MetricsEvent {
this(source, null, null, typeWrapper);
}
- public MetricsEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) {
+ public MetricsEvent(ApplicationModel source, String appName, MetricsEventMulticaster metricsEventMulticaster, TypeWrapper typeWrapper) {
this.typeWrapper = typeWrapper;
if (source == null) {
this.source = ApplicationModel.defaultModel();
@@ -56,20 +55,20 @@ public abstract class MetricsEvent {
} else {
this.source = source;
}
- if (metricsDispatcher == null) {
+ if (metricsEventMulticaster == null) {
if (this.source.isDestroyed()) {
- this.metricsDispatcher = null;
+ this.metricsEventMulticaster = null;
} else {
ScopeBeanFactory beanFactory = this.source.getBeanFactory();
if (beanFactory.isDestroyed()) {
- this.metricsDispatcher = null;
+ this.metricsEventMulticaster = null;
} else {
- MetricsDispatcher dispatcher = beanFactory.getBean(MetricsDispatcher.class);
- this.metricsDispatcher = dispatcher;
+ MetricsEventMulticaster dispatcher = beanFactory.getBean(MetricsEventMulticaster.class);
+ this.metricsEventMulticaster = dispatcher;
}
}
} else {
- this.metricsDispatcher = metricsDispatcher;
+ this.metricsEventMulticaster = metricsEventMulticaster;
}
if (appName == null) {
this.appName = this.source.tryGetApplicationName();
@@ -115,8 +114,8 @@ public abstract class MetricsEvent {
return source;
}
- public MetricsDispatcher getMetricsDispatcher() {
- return metricsDispatcher;
+ public MetricsEventMulticaster getMetricsEventMulticaster() {
+ return metricsEventMulticaster;
}
public String appName() {
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java
similarity index 91%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java
index 74ef55e4c7..2d0888d17a 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java
+++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java
@@ -42,7 +42,7 @@ public class MetricsEventBus {
if (event.getSource() == null) {
return;
}
- MetricsDispatcher dispatcher = event.getMetricsDispatcher();
+ MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster();
Optional.ofNullable(dispatcher).ifPresent(d -> {
tryInvoke(() -> d.publishEvent(event));
});
@@ -106,13 +106,14 @@ public class MetricsEventBus {
* eventSaveRunner saves the event, so that the calculation rt is introverted
*/
public static void before(MetricsEvent event) {
- MetricsDispatcher dispatcher = validate(event);
+ MetricsEventMulticaster dispatcher = validate(event);
+
if (dispatcher == null) return;
tryInvoke(() -> dispatcher.publishEvent(event));
}
public static void after(MetricsEvent event, Object result) {
- MetricsDispatcher dispatcher = validate(event);
+ MetricsEventMulticaster dispatcher = validate(event);
if (dispatcher == null) return;
tryInvoke(() -> {
event.customAfterPost(result);
@@ -121,13 +122,13 @@ public class MetricsEventBus {
}
public static void error(MetricsEvent event) {
- MetricsDispatcher dispatcher = validate(event);
+ MetricsEventMulticaster dispatcher = validate(event);
if (dispatcher == null) return;
tryInvoke(() -> dispatcher.publishErrorEvent((TimeCounterEvent) event));
}
- private static MetricsDispatcher validate(MetricsEvent event) {
- MetricsDispatcher dispatcher = event.getMetricsDispatcher();
+ private static MetricsEventMulticaster validate(MetricsEvent event) {
+ MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster();
if (dispatcher == null) {
return null;
}
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java
similarity index 95%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java
index 69e7e42925..e814465b36 100644
--- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java
+++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java
@@ -33,7 +33,7 @@ public abstract class TimeCounterEvent extends MetricsEvent {
this.timePair = TimePair.start();
}
- public TimeCounterEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) {
+ public TimeCounterEvent(ApplicationModel source, String appName,MetricsEventMulticaster metricsDispatcher, TypeWrapper typeWrapper) {
super(source, appName, metricsDispatcher, typeWrapper);
this.timePair = TimePair.start();
}
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java
diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java
similarity index 100%
rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java
rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java
diff --git a/dubbo-metrics/pom.xml b/dubbo-metrics/pom.xml
index 014632df63..901a7888ec 100644
--- a/dubbo-metrics/pom.xml
+++ b/dubbo-metrics/pom.xml
@@ -19,6 +19,7 @@
4.0.0
dubbo-metrics-api
+ dubbo-metrics-event
dubbo-metrics-default
dubbo-metrics-registry
dubbo-metrics-metadata
diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml b/dubbo-test/dubbo-dependencies-all/pom.xml
index 0216003790..6afbac88e0 100644
--- a/dubbo-test/dubbo-dependencies-all/pom.xml
+++ b/dubbo-test/dubbo-dependencies-all/pom.xml
@@ -181,6 +181,11 @@
dubbo-metrics-api
${project.version}
+
+ org.apache.dubbo
+ dubbo-metrics-event
+ ${project.version}
+
org.apache.dubbo
dubbo-metrics-default