是否可以使用Apache Thrift在客户端和服务器之间实现双向通信?这样不仅能够从客户端到服务器进行RPC,还能反过来吗?在我的项目中,我要求服务器还必须将一些数据推送到客户端,而不会被客户端询问。
答案 0 :(得分:2)
有两种方法可以通过Thrift实现这一目标。
如果两端都是或多或少的同伴并且您通过套接字或管道连接它们,那么您只需在两端设置服务器和客户端,您就已经完成了很多工作。但是,这并不适用于所有情况,特别是对于HTTP。
如果您通过HTTP或类似渠道连接服务器和客户端,则有一种称为" long polling"的技术。它基本上要求客户端像往常一样调用服务器,但只有当服务器想要将一些数据发送回客户端时才会返回调用。收到数据后,如果客户仍然对更多数据感兴趣,则客户开始另一个电话。
正如Denis所指出的,根据您的确切用例,您可能需要考虑使用MQ系统。请注意,仍然可以使用Thrift对队列中的消息进行序列化/序列化。 contrib folder有一些例子说明如何使用Thrift与ZMQ,Rebus和其他一些。
答案 1 :(得分:0)
然后你最好使用队列,例如ZeroMQ。