2016-06-30 16 views
1

Ich verwende netcat als eine Brücke zwischen einigen Diensten und einer Spark-Streaming-Instanz. Zum Beispiel sendet der Dienst eine Nachricht an eine host:port, die net Katze hört und dann ist die Idee, dass Funken dies verbrauchen kann. Es gibt jedoch einen Weg, Netcat Passthrough zu machen, d.h. als ein wirklich einfacher Server zu fungieren und buchstäblich zu hören und zu emittieren.Kann netcat gemacht werden, um in einer Passthrough-Methode zu arbeiten

ncat -lk localhost 5005 

Dies zeigt, dass ich meine Nachrichten von meinem ersten Dienst senden kann. Aber ich bekomme nichts vom Funken, der auf den gleichen Host hört: Port. Gibt es eine Möglichkeit, dies zum Funktionieren zu bringen?

Ein Vorschlag war, die Rohrleitung mit mkfifo backpipe zu verwenden, aber das Problem ist jetzt, dass beim Ausführen meiner Spark-Instanz auf 5006 zu hören ist, aber es scheint, dass diese Verbindung lebendig nicht scheint. Mein Dienst sendet an 5005 und netcat sollte es dann an 5006 leiten, aber wie kann ich den Dienst auf 5006 so einrichten, dass er immer vorhanden ist, sodass meine Spark-Instanz ihn hören kann?

mkfifo backpipe 
nc -kl localhost 5005 0<backpipe | nc localhost 5006 1>backpipe 

Ich habe versucht, auch die folgenden für eine gute Maßnahme:

nc -klp 5005 -w 5 localhost 5006 

Aber die Frage ist immer, dass Funke nicht mit dem folgenden Fehler verbrauchen kann:

Deregistered receiver for stream 0: Restarting receiver with delay 2000ms: Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused 
+1

Falls vorhanden netpipes Paket mit Hahn und Schlauch könnte ein besseres Spiel, aber mit 'mkfifo' zur Hand es sollte mit 'netcat' arbeiten, wie zB beschrieben bei [bidirektionale Socat-Funktionalität mit nc] (http://superuser.com/questions/363688/bidirectional-socat-funktionality-with-nc?newreg=5312edc53c59492a9b4b9b9ba1a4f725) – Dilettant

+1

@Dilettant Ich habe das versucht und aktualisierte die Frage. Vielen Dank. – disruptive

Antwort

1

Was die Version von netcat ist Sie nutzen? Und welches Betriebssystem? Wenn Sie traditionelle netcat (nicht BSD-one für Spark Beispiele verwendet) verwenden, müssen Sie Port Argument liefern:

nc -lk -p 5005