是否可以将节俭代码转换为异步代码

wyyhbhjk  于 2021-06-03  发布在  Flume
关注(0)|答案(3)|浏览(421)

我现在有下面的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;
}

具体地说,javaapi有asyncclient,它在c++中确实存在,并且在任何地方都有文档记录。到目前为止,谷歌还没有帮到我。

sbdsn5lh

sbdsn5lh1#

fbthrift的cpp2支持它。 fbthrift 是Apache节俭的一个分支。

roejwanj

roejwanj2#

不是不可能,至少看起来是这样。我现在也在做同样的工作,但我还没有开始工作。
我发现两个有用的链接可能对您有所帮助:
一个c++客户机实现,它有一些类可以帮助处理java实现中缺少的部分
在ApacheJira for thrift-1上也有一些非常酷的boost.asio想法
看起来所有的信息都在那里,但我还是有点困惑:)
hth公司

wz8daaqr

wz8daaqr3#

可以将libuv用于异步工作。nodejs也使用这个库进行异步操作

相关问题