【问题标题】:In the C++ streaming gRPC API, is there any way to check how many messages are buffered in the grpc queue?在 C++ 流式 gRPC API 中,有没有办法检查 grpc 队列中缓冲了多少消息?
【发布时间】:2020-01-17 08:56:19
【问题描述】:

grpc_impl::ServerReaderWriter/grpc_impl::internal::ReaderInterface 实现 NextMessageSize(),但从命名看来它只返回下一条消息的大小,并且来自 this 线程和它的文档好像返回值只是一个上限。

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

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

【问题讨论】:

    标签: grpc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多