私はApache Flinkを学んでいます。 FlinkのHello Worldは次のとおりです。https://ci.apache.org/projects/flink/flink-docs-stable/getting-started/tutorials/local_setup.html
この例は、5秒ごとに単語数を数えるプログラムです。
この例を実行するには、次の手順を実行する必要があります。
- 端末で
nc -l 9000
(A)を実行します。 - 他の端末で
./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9000
(B)を実行します。 - ターミナルAに行き、単語を入力してください。
私たちがCtrl-c
ターミナルAにいた場合、このサンプルは終了しました。
端末Aにプログラムで単語を入力できるかどうかを知りたいです。たとえば、ターミナルAに1秒ごとに単語を入力したいのですが、lol
どうすればいいですか?
以下のコードは機能しません。
#!/bin/bash
while true; do
echo 'lol' | nc -l 9000
sleep 1
done
もちろん、SocketWindowWordCount.java
これを行うために修正を試みることもできますが、現在何らかの理由でJavaコードを変更することはできません。
答え1
ループ全体を次にパイプしますnc
。
while true; do
echo 'lol'
sleep 1
done | nc -l 9000
nc
これにより、ポート9000で接続をリッスンし、毎秒「lol」を送信する単一のインスタンスが起動します。
接続が開かれるまで「笑い」が蓄積されるので、接続直後に送信される「笑い」をたくさん見ることができます。最初に遅延を追加できます。
(sleep 5
while true; do
echo 'lol'
sleep 1
done) | nc -l 9000