具有HTTP回调的异步RPC

时间:2016-04-22 08:21:17

标签: http go rpc json-rpc

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

net/rpc/Call也会进行RPC调用,但在调用完成之前它会阻塞。如果您知道如何使用频道,请确保您使用Go方法获得所需内容。

答案 1 :(得分:0)

您可以查看grpc。这样:

  • 有一个native go implementation
  • 对于“etc”
  • 的大多数值都有“Java,Python等”的实现
  • 通过HTTP2工作(好的,不是很好,但很相似)
  • 完全asynchronous(例如恰好是C ++)。