为了账号安全,请及时绑定邮箱和手机立即绑定

带有 HTTP 回调的异步 RPC

带有 HTTP 回调的异步 RPC

Go
PIPIONE 2022-01-04 21:24:41
我正在设计一个具有阻塞功能的 SDK(在 Golang 中),它应该与通过回调返回的结果异步运行。我一直在使用Gorilla Toolkit RPC 库,这很棒,但我没有看到返回异步调用值的方法。也许我遗漏了一些东西并且 RPC 模型不支持异步调用,我的意思是所有调用都被阻塞,即使很长一段时间也是如此。如果是这种情况,我假设没有 HTTP 超时?如何使用通过回调返回的返回值来实现异步 RPC 调用。澄清一下:我不能使用典型的 Go Channel 方法进行回调,因为我将通过 HTTP 从另一种语言调用 RPC。所以我的问题是,有没有办法在执行 RPC 时通过 HTTP 实现回调,或者调用是否应该阻塞,即使很长时间直到准备好返回值?
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2022-01-04
?
慕斯709654

TA贡献1840条经验 获得超5个赞

你可以看看grpc。这:

  • 有一个原生的 go 实现

  • 对于“等”的大多数值,有“Java、Python 等”的实现

  • 在 HTTP2 上工作(好吧,不完全是 http,但非常相似)

  • 完全异步(示例恰好是 C++)。


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号