如何按照文档中提到的那样在 java gRPC 中交换传输?

How to swap in transport in java gRPC as alluded to in docs?

在阅读javagRPC时,最后一段声明了更改传输

https://github.com/grpc/grpc-java/blob/master/README.md

我似乎找不到关于此的任何文档。我确实深入研究了 gradle gRPC 插件,该插件接下来使用 protoc-gen-grpc-java 插件执行 protoc。在那之后,我似乎无法在调用 java 插件的 grpc-java 项目中找到 link 。我正在尝试追踪插件点以查看 okhttp 或 netty 被交换的位置,但它正在躲避我。

有人对我大海捞针 qwest 有任何指点吗? (到此为止感觉像一根针)

谢谢, 院长

生成的代码存根层不与传输层交互,反之亦然。相反,您需要使用通道层使它们一起交互。 gRPC 中的每个通道实现都是特定于传输的,例如 NettyChannel、OkHttpChannel 和 InProcessChannel(或服务器端的服务器)。

// GreeterGrpc is generated code to create a stub
YourServiceGrpc.newBlockingStub(channel);

其中频道可以使用这 3 种提供的传输之一; Netty、OkHttp、进程中。

ManagedChannel channel =
  NettyChannelBuilder.forTarget(target).build();
//or,  OkHttpChannelBuilder.forTarget(target).build();
//or,  InProcessChannelBuilder.forTarget(target).build();

gRPC 还提供服务加载器以提供首选传输方式 ManagedChannelProvider。您可以使用 ManagedChannelBuilder 来使用特定于环境的传输。