我目前有以下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 ++是否存在,并且它在任何地方都有记录。到目前为止谷歌还没有帮助过我。
答案 0 :(得分:0)
您可以使用libuv进行异步工作。 NodeJS还将此库用于异步操作
答案 1 :(得分:0)
不是不可能,或者看起来如此。我现在正在努力工作,但我还没有工作。
我找到了两个可能对您有用的有用链接:
A C++ client implementation有一些分类可以帮助解决这个问题Java implementation
对于THRIFT-1的apache jira,还有一些非常酷的boost.asio想法
看起来所有的信息都在那里,但我仍然有点困惑:)
H个
答案 2 :(得分:0)