В настоящее время у меня есть следующий код C ++, который отправляет сообщения в Flume с использованием Thrift, но мне нужно сделать то же самое неблокирующим способом с обратным вызовом для использования в 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 ++ и задокументирован ли он где угодно. Гугл мне пока не помог.
Ты можешь использовать libuv для асинхронной работы. NodeJS также использует эту библиотеку для асинхронных операций
Не невозможно, или так кажется. Я сейчас работаю над тем же, но у меня пока нет работы.
Я нашел две полезные ссылки, которые могут быть вам полезны:
Клиентская реализация C ++ что некоторые классифицируются, которые помогают с недостающими частями этого Реализация Java
Есть также несколько довольно крутых идей boost.asio на apache jira для БЕРЕЖЛИВОСТЬ-1
Похоже, что вся информация есть, но я все еще немного сбит с толку 🙂
Hth