在使用了几种不同的消息传递和 RPC 系统后,我得出的结论是,您最终总是需要传统的 RPC,并推送某种类型的事件。否则,您不可避免地会遇到一些投票黑客。
例如,HTTP 最初只支持 RPC 样式的方法(GET 和 POST 立即返回响应)。人们意识到需要推送事件,因此使用长轮询来破解它。最终,通过Server-Sent Events解决了这个问题。
CoAP(基于 UDP 的轻量级 HTTP 版本)还通过向 GET 请求添加“监视器”选项来支持推送事件。这是一个非常优雅的解决方案。
但是这些都不是 Thrift 风格的 RPC,我的意思是你编写一个接口定义文件,并且有一些工具可以将该接口编译为你选择的语言的本机代码。此后,您几乎可以像调用本地程序一样调用远程程序。
所以我的问题是,是否有任何 Thrift 风格的 RPC 系统可以让您订阅推送事件并在事件到达时调用回调(或类似的)?