JsonToGrpc GatewayFilter ファクトリ
JSONToGRPC GatewayFilter ファクトリは、JSON ペイロードを gRPC リクエストに変換します。
フィルターは次の引数を取ります。
service: リクエストを処理するサービスの短い名前。method: リクエストを処理するサービスのメソッド名。protoDescriptor: プロト記述子ファイル。
このファイルは、protoc を使用し、--descriptor_set_out フラグを指定して生成できます。
protoc --proto_path=src/main/resources/proto/ \
--descriptor_set_out=src/main/resources/proto/hello.pb \
src/main/resources/proto/hello.protostreaming はサポートされていません。 |
application.yml.
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("json-grpc", r -> r.path("/json/hello").filters(f -> {
String service = "HelloService";
String method = "hello";
String protoDescriptor = "file:src/main/proto/hello.pb";
return f.jsonToGRPC(service, method, protoDescriptor);
}).uri(uri))spring:
cloud:
gateway:
routes:
- id: json-grpc
uri: https://localhost:6565
predicates:
- Path=/json/**
filters:
- name: JsonToGrpc
args:
service: HelloService
method: hello
protoDescriptor: file:proto/hello.pb ゲートウェイを介して /json/hello へのリクエストが行われると、リクエストは hello.proto で提供される定義を使用して変換され、HelloService/hello に送信され、返されるレスポンスは JSON に変換されます。
デフォルトでは、デフォルトの TrustManagerFactory を使用して NettyChannel を作成します。ただし、型 GrpcSslConfigurer の Bean を作成することにより、この TrustManager をカスタマイズできます。
@Configuration
public class GRPCLocalConfiguration {
@Bean
public GRPCSSLContext sslContext() {
TrustManager trustManager = trustAllCerts();
return new GRPCSSLContext(trustManager);
}
}