在StreamObserver.onNext()内部阻塞

时间:2018-12-04 14:04:52

标签: java grpc

我在GRPC文档中找不到与此有关的任何内容。 GRPC是否期望我对StreamObserver.onNext()的实现是非阻塞的?如果GRPC阻止了(例如,拒绝新请求,将新请求排队等),对GRPC有什么影响?

1 个答案:

答案 0 :(得分:1)

如果需要阻止,您可以阻止。

由于RPC的回调被认为是非线程安全的,因此阻塞将延迟其他回调,直到您返回为止。其中包括setOnReadyHandlersetOnCancelHandler中的ClientCallStreamObserverServerCallStreamObserver

在流式RPC中,从您的onNext()返回后,gRPC会自动请求另一条消息,因此,如果阻止gRPC,将避免收到太多消息。但是,gRPC仍将允许某些消息被缓冲。

阻止不会影响新的RPC。