是否可以将Thrift代码转换为Async

时间:2014-05-02 19:20:12

标签: c++ node.js thrift flume

我目前有以下C ++代码使用Thrift发布到Flume,但我需要以非阻塞方式执行相同操作,并在Node.js中使用回调。

boost::shared_ptr<TTransport> socket(new TSocket(logger->host_.c_str(), logger->port_));
boost::shared_ptr<TTransport> transport(new TFramedTransport(socket));
boost::shared_ptr<TProtocol> protocol(new TCompactProtocol(transport));
map <string,string> headers;
try {
    ThriftSourceProtocolClient client(protocol);
    transport->open();
    ThriftFlumeEvent evt;

    //headers["host"] = std::string(hostname);

    evt.headers = headers;
    evt.body = message;

    client.append(evt);
    transport->close();
} catch( ... ) {
    cerr << "\tException raised!" << endl;
}

具体来说,Java API具有AsyncClient,C ++是否存在,并且它在任何地方都有记录。到目前为止谷歌还没有帮助过我。

3 个答案:

答案 0 :(得分:0)

您可以使用libuv进行异步工作。 NodeJS还将此库用于异步操作

答案 1 :(得分:0)

不是不可能,或者看起来如此。我现在正在努力工作,但我还没有工作。

我找到了两个可能对您有用的有用链接:

A C++ client implementation有一些分类可以帮助解决这个问题Java implementation

对于THRIFT-1的apache jira,还有一些非常酷的boost.asio想法

看起来所有的信息都在那里,但我仍然有点困惑:)

H个

答案 2 :(得分:0)

fbthriftcpp2支持它。 fbthrift是Apache Thrift的一个分支。