저는 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