由thrift客户端接收异步消息

时间:2013-11-17 18:20:06

标签: python language-agnostic erlang thrift thrift-protocol

我使用Apache Thrift来定义协议。我希望客户端从服务器接收异步消息。

service ServerService {
    oneway void async_server_hello(1: string message_from_client);
    string sync_server_hello(1: string message_from_client);
}

service ClientService { // how to use it from the server side?
    oneway void async_client_hello(1: string message_from_server);
}

我知道如何连接到服务器,向服务器发送同步和异步消息,但我不知道如何从服务器向连接的客户端发送异步消息。

(Python或Erlang代码更可取,但任何其他语言都可以)

1 个答案:

答案 0 :(得分:1)

Apache Thrift无法实现Bidi消息传递。服务器总是对客户端请求作出反应(当然除了单独)。如果您希望服务器重新调用客户端,则客户端必须在其上设置服务器。另一种选择可能是长时间运行的调用,以模拟所需的行为。

我至少看过one fork on Github doing Bidi-Messaging,但

  • 我不知道这个/这些项目的状态是什么,
  • 那些东西不是Apache Thrift项目的一部分。

有一堆JIRA门票处理这个主题,但实质上是Thrift不会在不久的将来支持这个,因为其中一个目标是简单性,Bidi本身并不是,特别是在运输和语言之间。

所以有解决方案,但没有内置方式可以自动为您完成。