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 的消息的小缓冲区。这会让您收到当前消息,然后检查是否有其他消息同时到达。