在流式处理 gRPC API C++中,有没有办法检查 grpc 队列中缓冲了多少条消息?



grpc_impl::ServerReaderWriter/grpc_impl::internal::ReaderInterface 实现 NextMessageSize((,但从命名来看,它似乎只返回紧接下一条消息的大小,从这个线程和文档中,返回值似乎只是一个上限。

对于流应用程序(例如音频/视频、文本、任何实时双工流(,了解从客户端到达的数据量会很有帮助,以便可以批量处理,或测量非实时性,或适应可变流速率等。

感谢您的任何指示和解释。

当前 API 不提供此类功能。通常建议继续从流中读取,尤其是在应用程序期望接收消息的情况下。如果应用程序停止读取,gRPC 也会在某个时间点停止读取,具体取决于资源配额的配置方式。即使配置使 gRPC 永不停止读取,我们也冒着 gRPC 消耗过多内存的风险。

在我看来,您想要的是 gRPC 之上构建一个层,该层将缓冲消息,以便您可以批量处理它们并执行测量。

最新更新