gRPC中的通道/存根是否是线程安全的

时间:2015-10-18 11:56:37

标签: java thread-safety grpc

当使用Java中的gRPC时,我可以缓存存根(客户端)并在多线程环境中调用它们,还是通道线程安全且可以安全地缓存?

如果网络中断,我应该重新创建频道还是足够聪明才能重新连接?我无法在http://www.grpc.io/docs/

上找到相关信息

由于

1 个答案:

答案 0 :(得分:19)

回答第一个问题:

频道是线程安全的; io.grpc.Channel标有@ThreadSafe注释。存根也是线程安全的,这就是重新配置创建新存根的原因。

回答第二个问题:

如果网络中断,您不需要重新创建频道。该频道将重新连接指数退避,大致如connection backoff doc所述。 Java并不是100%符合该算法,因为它在以后的重试中不会增加连接超时。 (不要与实现的指数退避混淆。)