gRPC Java 客户端 - 在 onNext 期间有 Next?
gRPC Java Client - hasNext during onNext?
我有一个服务器端流式 gRPC 服务,可能会非常快速地收到消息。拥有客户端功能的一个好处是知道在这个 onNext 执行准备好在 UI 中显示时已经有更多更新排队,因为我只想显示下一个更新。
StreamObserver< Info > streamObserver = new StreamObserver< info >( )
{
@Override
public void onNext( Info info )
{
doStuffForALittleWhile();
if( !someHasNextFunction() )
render();
}
}
是否有一些我不知道的下一个功能或检测方法?
无法 API 确定是否已收到其他消息,但尚未传送到应用程序。
客户端存根 API(例如,StreamObserver
)是使用更高级的 ClientCall/ClientCall.Listener API 实现的。它不提供任何已收到但未送达的提示。
在内部,gRPC 延迟处理消息。 gRPC 等待应用程序准备好接收更多消息(通常从 StreamObserver.onNext()
返回)以尝试解码另一条消息。如果它解码了另一条消息,那么它将立即开始传送该消息。
一种方法是使用来自 onNext 的消息的小缓冲区。这会让您收到当前消息,然后检查是否有其他消息同时到达。
我有一个服务器端流式 gRPC 服务,可能会非常快速地收到消息。拥有客户端功能的一个好处是知道在这个 onNext 执行准备好在 UI 中显示时已经有更多更新排队,因为我只想显示下一个更新。
StreamObserver< Info > streamObserver = new StreamObserver< info >( )
{
@Override
public void onNext( Info info )
{
doStuffForALittleWhile();
if( !someHasNextFunction() )
render();
}
}
是否有一些我不知道的下一个功能或检测方法?
无法 API 确定是否已收到其他消息,但尚未传送到应用程序。
客户端存根 API(例如,StreamObserver
)是使用更高级的 ClientCall/ClientCall.Listener API 实现的。它不提供任何已收到但未送达的提示。
在内部,gRPC 延迟处理消息。 gRPC 等待应用程序准备好接收更多消息(通常从 StreamObserver.onNext()
返回)以尝试解码另一条消息。如果它解码了另一条消息,那么它将立即开始传送该消息。
一种方法是使用来自 onNext 的消息的小缓冲区。这会让您收到当前消息,然后检查是否有其他消息同时到达。