gRPC is a high-performance RPC framework that supports multiple languages, concise service definitions, and streaming. It is an ideal choice for building scalable and efficient microservice systems.
This project provides out-of-the-box, highly extensible Spring Boot starters for the gRPC ecosystem, making the integration of Spring Boot and gRPC seamless and native.
- Dependency management for gRPC-related libraries
- gRPC server autoconfiguration
- gRPC client autoconfiguration
- gRPC HTTP transcoding: Support both gRPC and HTTP/JSON with a single codebase.
- Protobuf validation: Protobuf message validation using protovalidate and protoc-gen-validate.
- Metrics: Integrate Spring Boot Actuator with gRPC services.
- Tracing: Integrate Spring Boot Actuator with gRPC server and client.
- Testing: Integration with
SpringBootTest
.
implementation(platform("io.github.danielliu1123:grpc-starter-dependencies:<latest>"))
implementation("io.github.danielliu1123:grpc-boot-starter")
implementation("io.grpc:grpc-testing-proto")
@SpringBootApplication
public class SimpleApp extends SimpleServiceGrpc.SimpleServiceImplBase {
public static void main(String[] args) {
new SpringApplicationBuilder(SimpleApp.class)
.properties("grpc.client.base-packages=io.grpc")
.properties("grpc.client.authority=127.0.0.1:9090")
.run(args);
}
@Override
public void unaryRpc(SimpleRequest request, StreamObserver<SimpleResponse> r) {
var response = SimpleResponse.newBuilder()
.setResponseMessage("Hello " + request.getRequestMessage())
.build();
r.onNext(response);
r.onCompleted();
}
@Bean
ApplicationRunner runner(SimpleServiceGrpc.SimpleServiceBlockingStub stub) {
return args -> {
var response = stub.unaryRpc(SimpleRequest.newBuilder().setRequestMessage("World!").build());
System.out.println(response.getResponseMessage());
};
}
}
Refer to quick-start.
Go to Reference Documentation for more information.
This project is governed by the Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to [email protected].
Use the issue tracker for bug reports, feature requests, and submitting pull requests.
If you would like to contribute to the project, please refer to Contributing.
The MIT License.