Aşağıdaki kod bir iş parçacığında çalışır, iletileri bir sıradan alır ve bunları logstash dosyasına gönderir. Json'un (mesajların içeriği) sokete soktuğunu ve diğer tarafa geçtiğini kanıtlayan bir birim sınavım var. Ancak, gerçek logstash'ı işaret ettiğimde, hiçbir şey ortaya çıkmaz. Aynı içeriği okuyabiliyorum ve ortaya çıkıyor. Tabii ki, nc, bir mesajın gönderilmesinin sonunda bağlantıyı kapatacaktır. Bağlantıyı kaybedersek tekrar bağlanmak için biraz karmaşıklık var. tcp üzerinden logstash üzerinden js'ye gönderme, bağlantıyı açık tutma, hiçbir zaman gösterme
logstash yapılandırma
oldukça basittir: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();
}