我正在设计一个带有阻止功能的SDK(在Golang中),它应该与通过回调返回的结果异步运行。
我一直在玩Gorilla Toolkit RPC library,这很棒,但我没有看到返回异步调用值的方法。
也许我错过了一些东西,RPC模型不支持异步调用,我的意思是所有的调用都是阻塞的,即使很长一段时间。如果是这种情况,我假设没有HTTP超时呢?
如何实现异步RPC调用,并通过回调返回返回值。
澄清:我无法使用典型的Go Channel方法进行回调,因为我将通过HTTP从另一种语言调用RPC。所以我的问题是,有没有办法在执行RPC时通过HTTP实现回调,或者调用是否会阻塞,即使很长一段时间,直到值准备好返回?
答案 0 :(得分:1)
我不了解Gorilla,但在Go标准库的 net / rpc 包中,您会发现此方法net/rpc/Go。它以异步方式进行RPC调用,为其提供一个通道作为参数,以便在远程过程调用完成时检索RPC回复。
net/rpc/Call也会进行RPC调用,但在调用完成之前它会阻塞。如果您知道如何使用频道,请确保您使用Go方法获得所需内容。
答案 1 :(得分:0)
您可以查看grpc。这样: