Блокировка внутри StreamObserver.onNext () - PullRequest
0 голосов
/ 04 декабря 2018

Я не смог найти ничего в документации GRPC по этому поводу.Ожидает ли GRPC, что моя реализация StreamObserver.onNext() будет неблокируемой?Каковы последствия для GRPC, если он блокирует (например, отклоняет новые запросы, ставит в очередь новые запросы и т. Д.)?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете заблокировать, если вам нужно заблокировать.

Поскольку обратные вызовы для RPC считаются не поточно-безопасными, блокировка будет задерживать другие обратные вызовы, пока вы не вернетесь.Это включает в себя setOnReadyHandler и setOnCancelHandler в ClientCallStreamObserver и ServerCallStreamObserver.

В потоковых RPC gRPC автоматически запрашивает другое сообщение после того, как вы вернетесь из onNext(), поэтому, если вы заблокируете gRPC, вы не получитеслишком много больше сообщений.Однако gRPC по-прежнему разрешает буферизацию некоторых сообщений.

Блокировка не влияет на новые RPC.

...