Vert.x gRPC/IO Server
Vert.x gRPC/IO Server extends the Vert.x gRPC server with grpc-java integration.
This server provides compatibility with the grpc-java generated stub approach with a service bridge.
Using Vert.x gRPC/IO Server
To use Vert.x gRPC/IO Server, add the following dependency to the dependencies section of your build descriptor:
-
Maven (in your
pom.xml
):
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-grpcio-server</artifactId>
<version>5.0.0.CR2</version>
</dependency>
-
Gradle (in your
build.gradle
file):
dependencies {
compile 'io.vertx:vertx-grpcio-server:5.0.0.CR2'
}
Service bridge
The Vert.x gRPC Server can bridge a gRPC service to use with grpc-java generated server classes.
GrpcIoServer grpcServer = GrpcIoServer.server(vertx);
GreeterGrpc.GreeterImplBase service = new GreeterGrpc.GreeterImplBase() {
@Override
public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
responseObserver.onNext(HelloReply.newBuilder().setMessage("Hello " + request.getName()).build());
responseObserver.onCompleted();
}
};
// Bind the service bridge in the gRPC server
GrpcIoServiceBridge serverStub = GrpcIoServiceBridge.bridge(service);
serverStub.bind(grpcServer);
// Start the HTTP/2 server
vertx.createHttpServer(options)
.requestHandler(grpcServer)
.listen();
The bridge supports deadline automatic cancellation: when a gRPC request carrying a timeout is received, a deadline is associated with the io.grpc.Context
an can be obtained from the current context. This deadline automatically cancels the request in progress when its associated timeout fires.