下面的代码在一个线程中运行,从队列中取出消息,然后将它们发送到logstash。我有一个单元测试证明json(它是消息的内容)使它进入套接字并进入另一端。
但是,当我将它指向实际的logstash时,没有任何事情发生过。我可以'nc'相同的内容,它出现了。当然,nc将在发送一条消息结束时关闭连接。如果我们失去连接,重新连接会有一些复杂性。
logstash配置非常简单:
input {
tcp {
port => 9191
codec => json
}
}
output {
stdout {
codec => rubydebug
}
}
while (true) {
byte[] message = messages.take();
executor.getWithRetry(() -> {
try {
if (socket == null) {
socket = new Socket(sinkAddress, port);
}
socket.getOutputStream().write(message);
return null;
} catch (IOException e) {
socket.close();
socket = null;
throw e;
}
}).join();
}
答案 0 :(得分:1)
确保在邮件末尾发送换行符。我发现发送" \ n"即使从windows框到linux上运行的logstash也能正常工作。