Skip to content

Commit 12c4a4c

Browse files
committed
made micrometer optional
1 parent 9a6aad4 commit 12c4a4c

File tree

5 files changed

+42
-22
lines changed

5 files changed

+42
-22
lines changed

client-v2/pom.xml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
<groupId>io.micrometer</groupId>
7979
<artifactId>micrometer-core</artifactId>
8080
<version>1.14.3</version>
81+
<optional>true</optional>
82+
<scope>compile</scope>
8183
</dependency>
8284

8385

@@ -141,12 +143,6 @@
141143
<scope>test</scope>
142144
</dependency>
143145

144-
<dependency>
145-
<groupId>io.micrometer</groupId>
146-
<artifactId>micrometer-observation</artifactId>
147-
<version>1.14.3</version>
148-
<scope>test</scope>
149-
</dependency>
150146
</dependencies>
151147

152148
<build>
@@ -203,6 +199,11 @@
203199
<createDependencyReducedPom>true</createDependencyReducedPom>
204200
<createSourcesJar>true</createSourcesJar>
205201
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
202+
<artifactSet>
203+
<excludes>
204+
<exclude>io.micrometer:*</exclude>
205+
</excludes>
206+
</artifactSet>
206207
<relocations>
207208
<relocation>
208209
<pattern>org.slf4j</pattern>

client-v2/src/main/java/com/clickhouse/client/api/Client.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import com.clickhouse.client.config.ClickHouseClientOption;
4040
import com.clickhouse.data.ClickHouseColumn;
4141
import com.clickhouse.data.ClickHouseFormat;
42-
import io.micrometer.core.instrument.MeterRegistry;
4342
import org.apache.hc.core5.concurrent.DefaultThreadFactory;
4443
import org.apache.hc.core5.http.ClassicHttpResponse;
4544
import org.apache.hc.core5.http.HttpHeaders;
@@ -954,19 +953,15 @@ public Builder useBearerTokenAuth(String bearerToken) {
954953
}
955954

956955
/**
957-
* Registers http client metrics with MeterRegistry.
956+
* Registers http client metrics with MeterRegistry.
958957
*
959958
* @param registry - metrics registry
960959
* @param name - name of metrics group
961960
* @return same instance of the builder
962961
*/
963962
public Builder registerClientMetrics(Object registry, String name) {
964-
if (registry instanceof MeterRegistry) {
965-
this.metric = registry;
966-
this.configuration.put(ClientConfigProperties.METRICS_GROUP_NAME.getKey(), name);
967-
} else {
968-
throw new IllegalArgumentException("Unsupported registry type." + registry.getClass());
969-
}
963+
this.metric = registry;
964+
this.configuration.put(ClientConfigProperties.METRICS_GROUP_NAME.getKey(), name);
970965
return this;
971966
}
972967

client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import com.clickhouse.client.api.data_formats.internal.SerializerUtils;
1414
import com.clickhouse.client.api.enums.ProxyType;
1515
import com.clickhouse.client.api.http.ClickHouseHttpProto;
16-
import io.micrometer.core.instrument.MeterRegistry;
17-
import io.micrometer.core.instrument.binder.httpcomponents.hc5.PoolingHttpClientConnectionManagerMetricsBinder;
1816
import org.apache.hc.client5.http.ConnectTimeoutException;
1917
import org.apache.hc.client5.http.classic.methods.HttpPost;
2018
import org.apache.hc.client5.http.config.ConnectionConfig;
@@ -60,6 +58,7 @@
6058
import java.io.IOException;
6159
import java.io.InputStream;
6260
import java.io.OutputStream;
61+
import java.lang.reflect.Method;
6362
import java.net.ConnectException;
6463
import java.net.InetSocketAddress;
6564
import java.net.NoRouteToHostException;
@@ -97,10 +96,10 @@ public class HttpAPIClientHelper {
9796
private final Set<ClientFaultCause> defaultRetryCauses;
9897

9998
private String defaultUserAgent;
100-
private Object metric;
101-
public HttpAPIClientHelper(Map<String, String> configuration, Object metric) {
99+
private Object metricsRegistry;
100+
public HttpAPIClientHelper(Map<String, String> configuration, Object metricsRegistry) {
102101
this.chConfiguration = configuration;
103-
this.metric = metric;
102+
this.metricsRegistry = metricsRegistry;
104103
this.httpClient = createHttpClient();
105104

106105
RequestConfig.Builder reqConfBuilder = RequestConfig.custom();
@@ -225,9 +224,16 @@ private HttpClientConnectionManager poolConnectionManager(SSLContext sslContext,
225224
connMgrBuilder.setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext));
226225
connMgrBuilder.setDefaultSocketConfig(socketConfig);
227226
PoolingHttpClientConnectionManager phccm = connMgrBuilder.build();
228-
if (metric != null && metric instanceof MeterRegistry) {
229-
String name = chConfiguration.getOrDefault(ClientConfigProperties.METRICS_GROUP_NAME.getKey(), "http-pool");
230-
new PoolingHttpClientConnectionManagerMetricsBinder(phccm, name).bindTo((MeterRegistry) metric);
227+
if (metricsRegistry != null ) {
228+
try {
229+
String mGroupName = chConfiguration.getOrDefault(ClientConfigProperties.METRICS_GROUP_NAME.getKey(),
230+
"ch-http-pool");
231+
Class<?> micrometerLoader = getClass().getClassLoader().loadClass("com.clickhouse.client.api.metrics.MicrometerLoader");
232+
Method applyMethod = micrometerLoader.getDeclaredMethod("applyPoolingMetricsBinder", Object.class, String.class, PoolingHttpClientConnectionManager.class);
233+
applyMethod.invoke(micrometerLoader, metricsRegistry, mGroupName, phccm);
234+
} catch (Exception e) {
235+
LOG.error("Failed to register metrics", e);
236+
}
231237
}
232238
return phccm;
233239
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.clickhouse.client.api.metrics;
2+
3+
import com.clickhouse.client.api.ClientMisconfigurationException;
4+
import io.micrometer.core.instrument.MeterRegistry;
5+
import io.micrometer.core.instrument.binder.httpcomponents.hc5.PoolingHttpClientConnectionManagerMetricsBinder;
6+
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
7+
8+
public class MicrometerLoader {
9+
10+
public static void applyPoolingMetricsBinder(Object registry, String metricsGroupName, PoolingHttpClientConnectionManager phccm) {
11+
if (registry instanceof MeterRegistry) {
12+
new PoolingHttpClientConnectionManagerMetricsBinder(phccm, metricsGroupName).bindTo((MeterRegistry) registry);
13+
} else {
14+
throw new ClientMisconfigurationException("Unsupported registry type." + registry.getClass());
15+
}
16+
}
17+
}

examples/client-v2/src/main/java/com/clickhouse/examples/client_v2/Stream2DbWriter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public Stream2DbWriter(String endpoint, String user, String password, String dat
3434
.setUsername(user)
3535
.setPassword(password)
3636
.compressServerResponse(true)
37+
.registerClientMetrics("test not a registry", "test")
3738
.setDefaultDatabase(database);
3839

3940
this.client = clientBuilder.build();

0 commit comments

Comments
 (0)