This is an automated email from the ASF dual-hosted git repository.
zhouxzhan pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 2246c3253 Add attributesBuilderSupplier for BrokerMetricsManager
(#6901)
2246c3253 is described below
commit 2246c32537297174a7e7b921031a14de42ffbcb7
Author: Zhouxiang Zhan <[email protected]>
AuthorDate: Thu Jun 15 16:33:11 2023 +0800
Add attributesBuilderSupplier for BrokerMetricsManager (#6901)
* Add attributesBuilderSupplier for BrokerMetricsManager
* fix
* add initial value
---
.../broker/metrics/BrokerMetricsManager.java | 14 +++--
.../broker/metrics/BrokerMetricsManagerTest.java | 68 ++++++++++++++++++++++
2 files changed, 78 insertions(+), 4 deletions(-)
diff --git
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
index 04eb6798a..f0b76107e 100644
---
a/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
+++
b/broker/src/main/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManager.java
@@ -23,10 +23,10 @@ import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.LongHistogram;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.ObservableLongGauge;
+import io.opentelemetry.exporter.logging.LoggingMetricExporter;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder;
import io.opentelemetry.exporter.prometheus.PrometheusHttpServer;
-import io.opentelemetry.exporter.logging.LoggingMetricExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.metrics.Aggregation;
import io.opentelemetry.sdk.metrics.InstrumentSelector;
@@ -43,6 +43,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.broker.BrokerController;
import org.apache.rocketmq.broker.client.ConsumerManager;
@@ -61,11 +62,10 @@ import
org.apache.rocketmq.common.metrics.NopObservableLongGauge;
import org.apache.rocketmq.common.topic.TopicValidator;
import org.apache.rocketmq.logging.org.slf4j.Logger;
import org.apache.rocketmq.logging.org.slf4j.LoggerFactory;
-import org.slf4j.bridge.SLF4JBridgeHandler;
-
import org.apache.rocketmq.remoting.metrics.RemotingMetricsManager;
import org.apache.rocketmq.remoting.protocol.header.SendMessageRequestHeader;
import org.apache.rocketmq.store.MessageStore;
+import org.slf4j.bridge.SLF4JBridgeHandler;
import static
org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.AGGREGATION_DELTA;
import static
org.apache.rocketmq.broker.metrics.BrokerMetricsConstant.COUNTER_CONSUMER_SEND_TO_DLQ_MESSAGES_TOTAL;
@@ -114,6 +114,8 @@ public class BrokerMetricsManager {
private LoggingMetricExporter loggingMetricExporter;
private Meter brokerMeter;
+ public static Supplier<AttributesBuilder> attributesBuilderSupplier =
Attributes::builder;
+
// broker stats metrics
public static ObservableLongGauge processorWatermark = new
NopObservableLongGauge();
public static ObservableLongGauge brokerPermission = new
NopObservableLongGauge();
@@ -152,7 +154,11 @@ public class BrokerMetricsManager {
}
public static AttributesBuilder newAttributesBuilder() {
- AttributesBuilder attributesBuilder = Attributes.builder();
+ AttributesBuilder attributesBuilder;
+ if (attributesBuilderSupplier == null) {
+ attributesBuilderSupplier = Attributes::builder;
+ }
+ attributesBuilder = attributesBuilderSupplier.get();
LABEL_MAP.forEach(attributesBuilder::put);
return attributesBuilder;
}
diff --git
a/broker/src/test/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManagerTest.java
b/broker/src/test/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManagerTest.java
new file mode 100644
index 000000000..11f7ae821
--- /dev/null
+++
b/broker/src/test/java/org/apache/rocketmq/broker/metrics/BrokerMetricsManagerTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.rocketmq.broker.metrics;
+
+import io.opentelemetry.api.common.AttributeKey;
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.common.AttributesBuilder;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class BrokerMetricsManagerTest {
+
+ @Test
+ public void testNewAttributesBuilder() {
+ Attributes attributes =
BrokerMetricsManager.newAttributesBuilder().put("a", "b")
+ .build();
+ assertThat(attributes.get(AttributeKey.stringKey("a"))).isEqualTo("b");
+ }
+
+ @Test
+ public void testCustomizedAttributesBuilder() {
+ BrokerMetricsManager.attributesBuilderSupplier = () -> new
AttributesBuilder() {
+ private AttributesBuilder attributesBuilder = Attributes.builder();
+ @Override
+ public Attributes build() {
+ return attributesBuilder.put("customized", "value").build();
+ }
+
+ @Override
+ public <T> AttributesBuilder put(AttributeKey<Long> key, int
value) {
+ attributesBuilder.put(key, value);
+ return this;
+ }
+
+ @Override
+ public <T> AttributesBuilder put(AttributeKey<T> key, T value) {
+ attributesBuilder.put(key, value);
+ return this;
+ }
+
+ @Override
+ public AttributesBuilder putAll(Attributes attributes) {
+ attributesBuilder.putAll(attributes);
+ return this;
+ }
+ };
+ Attributes attributes =
BrokerMetricsManager.newAttributesBuilder().put("a", "b")
+ .build();
+ assertThat(attributes.get(AttributeKey.stringKey("a"))).isEqualTo("b");
+
assertThat(attributes.get(AttributeKey.stringKey("customized"))).isEqualTo("value");
+ }
+}
\ No newline at end of file