gRPC Java可以相对容易地创建代理。对这样的代理使用异步存根很常见。当代理创建其传出RPC时,它可以在传出RPC的回调中保存对原始RPC的引用。当传出RPC的回调触发时,只需对原始RPC发出相同的调用。这解决了消息和错误。
截止日期和取消传播由...自动处理 io.grpc.Context 。
io.grpc.Context
你可能想参考 这个grpc级别的代理示例 (尚未合并到grpc / grpc-java)。它用 ClientCall / ServerCall 因为它很方便,因为它不想解析消息。使用它可以做同样的事情 StreamObserver API。
ClientCall
ServerCall
StreamObserver
这种代理的主要困难是观察流量控制。我引用的例子就是这样做的。如果使用 StreamObserver 您应该投射的API StreamObserver 传递到服务器 ServerCallStreamObserver 得到一个 ClientCallStreamObserver 通过一个 ClientResponseObserver 到客户端存根。
ServerCallStreamObserver
ClientCallStreamObserver
ClientResponseObserver