Java から gRPC を使用する場合、スタブ (クライアント) をキャッシュしてマルチスレッド環境で呼び出すことはできますか? またはチャネルはスレッドセーフで、安全にキャッシュできますか?
ネットワークが停止した場合、チャネルを再作成する必要がありますか?それとも再接続するのに十分スマートですか? http://www.grpc.io/docs/で関連情報が見つかりませんでした
ありがとう
Java から gRPC を使用する場合、スタブ (クライアント) をキャッシュしてマルチスレッド環境で呼び出すことはできますか? またはチャネルはスレッドセーフで、安全にキャッシュできますか?
ネットワークが停止した場合、チャネルを再作成する必要がありますか?それとも再接続するのに十分スマートですか? http://www.grpc.io/docs/で関連情報が見つかりませんでした
ありがとう
最初の質問への回答:
チャネルはスレッドセーフです。注釈io.grpc.Channel
でマークされています。@ThreadSafe
スタブもスレッドセーフであるため、再構成によって新しいスタブが作成されます。
2 番目の質問への回答:
ネットワークが停止した場合、チャネルを再作成する必要はありません。チャネルは、接続バックオフのドキュメントで大まかに説明されているように、指数バックオフで再接続します。Java は、後の再試行で接続タイムアウトを増加させないため、そのアルゴリズムに 100% 準拠しているわけではありません。(実装されている指数バックオフと混同しないでください。)