【发布时间】:2015-04-29 01:20:31
【问题描述】:
是否可以使用 Apache Thrift 在客户端和服务器之间实现双向通信?因此,不仅能够进行从客户端到服务器的 RPC,而且还可以反过来呢?在我的项目中,我要求服务器还必须将一些数据推送到客户端,而在此之前没有被客户端询问。
【问题讨论】:
是否可以使用 Apache Thrift 在客户端和服务器之间实现双向通信?因此,不仅能够进行从客户端到服务器的 RPC,而且还可以反过来呢?在我的项目中,我要求服务器还必须将一些数据推送到客户端,而在此之前没有被客户端询问。
【问题讨论】:
有两种方法可以使用 Thrift 实现这一目标。
如果两端或多或少是对等点,并且您通过套接字或管道连接它们,您只需在两端设置一个服务器和一个客户端,就大功告成了。然而,这并不适用于所有情况,尤其是 HTTP。
如果你通过HTTP或类似的通道连接服务器和客户端,有一种技术叫做“long polling”。它基本上需要客户端像往常一样调用服务器,但是只有当服务器想要将一些数据发送回客户端时,调用才会返回。客户端收到数据后,如果对更多数据仍然感兴趣,则再次调用。
正如 Denis 所指出的,根据您的具体用例,您可能需要考虑使用 MQ 系统。请注意,仍然可以使用 Thrift 对队列中的消息进行反序列化/序列化。 contrib folder 有一些示例,展示了如何将 Thrift 与 ZMQ、Rebus 等一起使用。
【讨论】:
那么你最好使用队列,例如零MQ。
【讨论】: