Являются ли каналы/заглушки в gRPC потокобезопасными

При использовании gRPC с Java я могу кэшировать заглушки (клиенты) и вызывать их в многопоточной среде или каналы являются потокобезопасными и могут безопасно кэшироваться?

Если произошел сбой в сети, следует ли воссоздать канал или он достаточно умен, чтобы снова подключиться? Я не нашел нужную информацию о http://www.grpc.io/docs/

Спасибо

Ответ 1

Ответ на первый вопрос:

Каналы являются потокобезопасными; io.grpc.Channel помечается аннотацией @ThreadSafe. Заглушки также являются поточно-ориентированными, поэтому при реконфигурации создается новая заглушка.

Ответ на второй вопрос:

В случае сбоя в сети вам не нужно заново создавать канал. Канал будет восстановлен с экспоненциальным откатом, примерно так, как описано в документе отката соединения. Java не на 100% соответствует этому алгоритму, потому что он не увеличивает время ожидания соединения при последующих попытках. (Не путать с экспоненциальным откатом, который реализован.)