带有 HTTP 回调的异步 RPC

我正在设计一个具有阻塞功能的 SDK(在 Golang 中),它应该与通过回调返回的结果异步运行。

我一直在使用Gorilla Toolkit RPC 库,这很棒,但我没有看到返回异步调用值的方法。

也许我遗漏了一些东西并且 RPC 模型不支持异步调用,我的意思是所有调用都被阻塞,即使很长一段时间也是如此。如果是这种情况,我假设没有 HTTP 超时?

如何使用通过回调返回的返回值来实现异步 RPC 调用。

澄清一下我不能使用典型的 Go Channel 方法进行回调,因为我将通过 HTTP 从另一种语言调用 RPC。所以我的问题是,有没有办法在执行 RPC 时通过 HTTP 实现回调,或者调用是否应该阻塞,即使很长时间直到准备好返回值?


PIPIONE
浏览 268回答 2
2回答

尚方宝剑之说

我不了解 Gorilla,但在Go 标准库的net/rpc包中,你会发现这个方法net/rpc/Go。它异步进行 RPC 调用,你给它一个通道作为参数,这样你就可以在远程过程调用完成时检索 RPC 回复。net/rpc/Call也进行 RPC 调用,但它会阻塞直到调用完成。如果你知道如何使用通道,我相信你会用 Go 方法得到你想要的。

慕斯709654

你可以看看grpc。这:有一个原生的 go 实现对于“等”的大多数值,有“Java、Python 等”的实现在 HTTP2 上工作(好吧,不完全是 http,但非常相似)完全异步(示例恰好是 C++)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go