【发布时间】:2014-05-19 03:08:41
【问题描述】:
我有一个带有 ZeroMQ 输入插件的 logstash 服务器设置,用于从我编写的一个简单应用程序中收集数据。当我在具有相同 ZeroMQ 安装(Ubuntu,apt-get install libzmq1)的系统上运行应用程序时,它运行良好。
但是,在我们的实际系统中,我们使用 ZeroMQ 4.0.1,并且 logstash 报告数据负载为空。我已经添加了我能想到的尽可能多的调试,我开始认为这是一个简单的版本不兼容(尽管 ZeroMQ 说这应该可以工作)。我用来测试的应用程序很简单:
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_PUB);
socket.connect ("tcp://logstash:2120");
for (int request_nbr = 0; request_nbr != 10; request_nbr++) {
dataList["number"] = boost::lexical_cast<std::string>(request_nbr);
std::string log = map2json(dataList);
zmq::message_t request (log.size());
memcpy ((void *) request.data (), log.c_str(), log.size());
std::cout << "Sending msg " << request_nbr << "…" << std::endl;
socket.send (request);
sleep(1);
}
当应用程序再次链接 ZMQ2.2(来自 libzmq1)时,这非常有效,但是当我将应用程序链接到我的 ZeroMQ 4.0.1 安装(从源代码构建)时,logstash 失败并出现 json 解析错误(声明有效载荷为空)。
更新
我在 Logstash 服务器上从源代码安装了 ZeroMQ 3.2.4,现在它可以工作了。
【问题讨论】: