gpt4 book ai didi

grpc - 如何取消 GRPC 流式调用?

转载 作者:行者123 更新时间:2023-12-04 03:59:39 38 4
gpt4 key购买 nike

通常,客户端可以通过以下方式取消 gRPC 调用:

(requestObserver as ClientCallStreamObserver<Request>)
.cancel("Cancelled", null)
但是,它显示在 Javadoc 中:
CancellableContext withCancellation = Context.current().withCancellation();
// do stuff
withCancellation.cancel(t);
哪一种是取消客户端调用并让服务器知道的“正确”方法?
编辑:
更令人困惑的是,还有 ManagedChannel.shutdown*

最佳答案

两者都是可以接受和适当的。clientCallStreamObserver.cancel() 通常更容易,因为它的样板文件更少。它通常应该是首选。但是,它不是线程安全的。它就像在 StreamObserver 上正常发送一样。它还需要直接感知 RPC;您不能让更高级别的代码协调取消,因为它甚至可能不知道 RPC。
使用 Context 取消进行线程安全取消和较少的 RPC 感知取消。上下文取消可用于类似于线程中断或 Future 取消的情况。并不是说 CancellableContext 应该被视为一种资源并且必须最终取消以避免内存泄漏。 ( context.cancel(null) 可以在上下文达到其“正常”生命周期结束时使用。)

关于grpc - 如何取消 GRPC 流式调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63250570/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com