通过 HTTP 进行回调的异步 RPC



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

我一直在使用大猩猩工具包 RPC 库,这很棒,但我看不到返回异步调用值的方法。

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

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

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

我不了解 Gorilla,但在 Go 标准库的 net/rpc 包中,你会发现这种方法 net/rpc/Go。它异步进行 RPC 调用,您为其提供一个通道作为参数,以便在远程过程调用完成时检索 RPC 回复。

net/rpc/Call 也会进行 RPC 调用,但在调用完成之前它会阻塞。如果你知道如何使用频道,我相信你会用Go方法得到你想要的。

你可以看看grpc。这:

  • 具有本机 go 实现
  • 对于"etc"的大多数值,具有"Java,Python等"的实现
  • 在HTTP2上工作(好吧,不完全是http,但非常相似)
  • 是完全异步的(示例恰好是C++)。

最新更新