我正在尝试创建一个
java grpc客户端来与go中的服务器通信.我是grpc的新手所以遵循本教程
gRPC Java Tutorial.在这些示例中,它们指的是阻塞和非阻塞存根,它们似乎是从
github的其他地方导入的.
import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideBlockingStub; import io.grpc.examples.routeguide.RouteGuideGrpc.RouteGuideStub; ... ... blockingStub = RouteGuideGrpc.newBlockingStub(channel); asyncStub = RouteGuideGrpc.newStub(channel);
但是我在他们的回购中找不到这些类.如果在编译.proto文件时它们是否已生成,我仍然对它们的用途感到朦胧?任何帮助/指针将不胜感激.谢谢.
解决方法
运行protoc编译器时会生成grpc存根类,并在proto文件中找到服务声明.存根类是客户端用于在服务端点上进行rpc调用的API.
这些存根有两种形式:阻塞和异步.
阻塞存根是同步的(阻止当前运行的线程)并确保在它上面调用的rpc调用在返回响应或引发异常之前不会返回.应该注意不要从UI线程调用阻塞存根上的rpc,因为这将导致无响应/ janky UI.
异步存根通过StreamObserver回调对象进行非阻塞rpc调用,其中响应是异步返回的.
有关更多信息,请参阅有关存根here的grpc文档.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。