我在GRPC文档中找不到与此有关的任何内容。 GRPC是否期望我对StreamObserver.onNext()
的实现是非阻塞的?如果GRPC阻止了(例如,拒绝新请求,将新请求排队等),对GRPC有什么影响?
答案 0 :(得分:1)
如果需要阻止,您可以阻止。
由于RPC的回调被认为是非线程安全的,因此阻塞将延迟其他回调,直到您返回为止。其中包括setOnReadyHandler
和setOnCancelHandler
中的ClientCallStreamObserver
和ServerCallStreamObserver
。
在流式RPC中,从您的onNext()
返回后,gRPC会自动请求另一条消息,因此,如果阻止gRPC,将避免收到太多消息。但是,gRPC仍将允许某些消息被缓冲。
阻止不会影响新的RPC。