当使用Java中的gRPC时,我可以缓存存根(客户端)并在多线程环境中调用它们,还是通道线程安全且可以安全地缓存?
如果网络中断,我应该重新创建频道还是足够聪明才能重新连接?我无法在http://www.grpc.io/docs/
上找到相关信息由于
答案 0 :(得分:19)
回答第一个问题:
频道是线程安全的; io.grpc.Channel
标有@ThreadSafe
注释。存根也是线程安全的,这就是重新配置创建新存根的原因。
回答第二个问题:
如果网络中断,您不需要重新创建频道。该频道将重新连接指数退避,大致如connection backoff doc所述。 Java并不是100%符合该算法,因为它在以后的重试中不会增加连接超时。 (不要与实现的指数退避混淆。)