Module io.inverno.mod.grpc.client
module io.inverno.mod.grpc.client
The Inverno framework gRPC client module provides a gRPC client.
It defines the following sockets:
- netService (required)
- the Net service providing the ByteBuf allocator
- configuration
- the gRPC client module configuration
- extensionRegistry
- the Protocol buffer extension registry
- messageCompressors
- custom gRPC message compressors
It exposes the following beans:
- configuration
- the gRPC client module configuration
- grpcClient
- the gRPC client
A remote gRPC service method can be called by using an HTTP/2 client and transforming the client HTTP exchange into a client gRPC exchange as follows:
HttpClient httpClient = ...
h2Endpoint = httpClient.endpoint("localhost", 8080)
.configuration(HttpClientConfigurationLoader.load(conf -> conf.http_protocol_versions(Set.of(HttpVersion.HTTP_2_0))))
.build();
HelloReply reply = h2Endpoint.exchange()
.map(exchange -> (GrpcExchange.Unary<ExchangeContext, HelloRequest, HelloReply>)grpcClient.unary(
exchange,
GrpcServiceName.of("helloworld", "Greeter"), "SayHello",
HelloRequest.getDefaultInstance(), HelloReply.getDefaultInstance()
))
.flatMap(grpcExchange -> {
grpcExchange.request().value(
HelloRequest.newBuilder()
.setName("Bob")
.build()
);
return grpcExchange.response();
})
.flatMap(GrpcResponse.Unary::value)
.block();
gRPC is only supported on top of the HTTP/2 protocol, the behaviour of an application using an HTTP/1.x client is undetermined.
It is recommended to rely on a protoc plugin for generating a proper gRPC client stub from Protocol buffer definitions.
- Since:
- 1.9
- Author:
- Jeremy Kuhn
-
Packages
FromPackagesio.inverno.mod.base io.inverno.mod.base.concurrent io.inverno.mod.base.converter io.inverno.mod.base.net io.inverno.mod.base.reflect io.inverno.mod.base.resource -
Modules
ModifierModuleDescriptiontransitiveDefines the foundational APIs of the Inverno framework modules.transitiveThe Inverno framework gRPC base module defines the base APIs and services for gRPC client and server implementations.transitiveThe Inverno framework HTTP base module defines base APIs and services for HTTP client and server implementations.transitiveThe Inverno framework HTTP client module provides an HTTP1.x and HTTP/2 client.