Skip to content

Commit 504e2e3

Browse files
committed
#1: Autoconfigure metric registry support
- keep only AutoConfiguration Signed-off-by: Sunny <hmtang@gmail.com> [resolves #1]
1 parent 99c8ad0 commit 504e2e3

File tree

8 files changed

+142
-129
lines changed

8 files changed

+142
-129
lines changed

samples/grpc-server/src/test/java/org/springframework/grpc/sample/GrpcServerApplicationTests.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package org.springframework.grpc.sample;
22

3-
import static org.assertj.core.api.Assertions.assertThat;
43
import static org.junit.jupiter.api.Assertions.assertEquals;
54

6-
import io.micrometer.core.instrument.MeterRegistry;
75
import org.apache.commons.logging.Log;
86
import org.apache.commons.logging.LogFactory;
97
import org.junit.jupiter.api.Test;
@@ -32,9 +30,6 @@ public static void main(String[] args) {
3230
@Autowired
3331
private SimpleGrpc.SimpleBlockingStub stub;
3432

35-
@Autowired
36-
private MeterRegistry meterRegistry;
37-
3833
@Test
3934
@DirtiesContext
4035
void contextLoads() {
@@ -48,18 +43,6 @@ void serverResponds() {
4843
assertEquals("Hello ==> Alien", response.getMessage());
4944
}
5045

51-
@Test
52-
@DirtiesContext
53-
void verifyMetrics() {
54-
log.info("Verify stats are collected");
55-
stub.sayHello(HelloRequest.newBuilder().setName("Alien").build());
56-
assertThat(meterRegistry.get("grpc.server.requests.received").counter().count()).isEqualTo(1);
57-
assertThat(meterRegistry.get("grpc.server.responses.sent").counter().count()).isEqualTo(1);
58-
stub.sayHello(HelloRequest.newBuilder().setName("Jamie").build());
59-
assertThat(meterRegistry.get("grpc.server.requests.received").counter().count()).isEqualTo(2);
60-
assertThat(meterRegistry.get("grpc.server.responses.sent").counter().count()).isEqualTo(2);
61-
}
62-
6346
@TestConfiguration
6447
static class ExtraConfiguration {
6548

spring-grpc-core/pom.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,6 @@
7171
<groupId>io.micrometer</groupId>
7272
<artifactId>micrometer-core</artifactId>
7373
</dependency>
74-
<dependency>
75-
<groupId>io.micrometer</groupId>
76-
<artifactId>micrometer-registry-prometheus</artifactId>
77-
</dependency>
7874

7975
<dependency>
8076
<groupId>org.junit.jupiter</groupId>

spring-grpc-core/src/main/java/org/springframework/grpc/server/DefaultGrpcServerFactory.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,16 @@
2323

2424
import com.google.common.collect.Lists;
2525

26-
import io.grpc.*;
26+
import io.grpc.Grpc;
27+
import io.grpc.InsecureServerCredentials;
28+
import io.grpc.Server;
29+
import io.grpc.ServerBuilder;
30+
import io.grpc.ServerCredentials;
31+
import io.grpc.ServerProvider;
32+
import io.grpc.ServerServiceDefinition;
2733

2834
import org.apache.commons.logging.Log;
2935
import org.apache.commons.logging.LogFactory;
30-
import org.springframework.beans.factory.annotation.Autowired;
3136
import org.springframework.grpc.internal.GrpcUtils;
3237

3338
/**
@@ -51,9 +56,6 @@ public class DefaultGrpcServerFactory<T extends ServerBuilder<T>> implements Grp
5156

5257
private final List<ServerBuilderCustomizer<T>> serverBuilderCustomizers;
5358

54-
@Autowired
55-
private List<ServerInterceptor> serverInterceptors;
56-
5759
public DefaultGrpcServerFactory(String address, List<ServerBuilderCustomizer<T>> serverBuilderCustomizers) {
5860
this.address = address;
5961
this.serverBuilderCustomizers = Objects.requireNonNull(serverBuilderCustomizers, "serverBuilderCustomizers");
@@ -81,11 +83,7 @@ public void addService(ServerServiceDefinition service) {
8183
*/
8284
@SuppressWarnings("unchecked")
8385
protected T newServerBuilder() {
84-
var builder = Grpc.newServerBuilderForPort(port(), credentials());
85-
for (ServerInterceptor interceptor : serverInterceptors) {
86-
builder.intercept(interceptor);
87-
}
88-
return (T) builder;
86+
return (T) Grpc.newServerBuilderForPort(port(), credentials());
8987
}
9088

9189
/**

spring-grpc-dependencies/pom.xml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,10 @@
115115
</dependency>
116116
<dependency>
117117
<groupId>io.micrometer</groupId>
118-
<artifactId>micrometer-core</artifactId>
119-
<version>${micrometer.version}</version>
120-
</dependency>
121-
<dependency>
122-
<groupId>io.micrometer</groupId>
123-
<artifactId>micrometer-registry-prometheus</artifactId>
118+
<artifactId>micrometer-bom</artifactId>
124119
<version>${micrometer.version}</version>
120+
<type>pom</type>
121+
<scope>import</scope>
125122
</dependency>
126123
</dependencies>
127124
</dependencyManagement>

spring-grpc-spring-boot-autoconfigure/src/main/java/org/springframework/grpc/autoconfigure/server/GrpcServerAutoConfiguration.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515
*/
1616
package org.springframework.grpc.autoconfigure.server;
1717

18-
import io.grpc.ServerInterceptor;
19-
import io.micrometer.core.instrument.MeterRegistry;
20-
import io.micrometer.core.instrument.binder.grpc.MetricCollectingServerInterceptor;
21-
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
2218
import org.springframework.beans.factory.ObjectProvider;
2319
import org.springframework.boot.autoconfigure.AutoConfiguration;
2420
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -73,15 +69,4 @@ ServerBuilderCustomizers serverBuilderCustomizers(ObjectProvider<ServerBuilderCu
7369
return new ServerBuilderCustomizers(customizers.orderedStream().toList());
7470
}
7571

76-
@ConditionalOnMissingBean
77-
@Bean
78-
public MeterRegistry meterRegistry() {
79-
return new SimpleMeterRegistry();
80-
}
81-
82-
@Bean
83-
public ServerInterceptor metricCollectingServerInterceptor(MeterRegistry meterRegistry) {
84-
return new MetricCollectingServerInterceptor(meterRegistry);
85-
}
86-
8772
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.springframework.grpc.autoconfigure.server;
2+
3+
import io.grpc.ServerBuilder;
4+
import io.grpc.ServerInterceptor;
5+
import io.micrometer.core.instrument.binder.grpc.ObservationGrpcServerInterceptor;
6+
import io.micrometer.observation.ObservationRegistry;
7+
import org.springframework.boot.autoconfigure.AutoConfiguration;
8+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
9+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
10+
import org.springframework.context.annotation.Bean;
11+
import org.springframework.grpc.server.ServerBuilderCustomizer;
12+
13+
@AutoConfiguration
14+
@ConditionalOnClass(ObservationGrpcServerInterceptor.class)
15+
@ConditionalOnBean(ObservationRegistry.class)
16+
public class GrpcServerMetricAutoConfiguration {
17+
18+
@Bean
19+
public ServerInterceptor observationGrpcServerInterceptor(ObservationRegistry observationRegistry) {
20+
return new ObservationGrpcServerInterceptor(observationRegistry);
21+
}
22+
23+
@Bean
24+
<T extends ServerBuilder<T>> ServerBuilderCustomizer<T> metricsInterceptor(ServerInterceptor observationGrpcServerInterceptor) {
25+
return (serverBuilder) -> serverBuilder.intercept(observationGrpcServerInterceptor);
26+
}
27+
}

0 commit comments

Comments
 (0)