2016-04-01 12 views
0

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(); 
      } 

cevap

1

Eğer mesajın sonunda bir satır karakteri gönderiyor emin olun. "\ N" göndermenin, bir windows kutusundan linux üzerinde çalışan logstash'a kadar bile iyi çalıştığını gördüm.

İlgili konular