Kafka Shell: Console Produce/Consume
๋ค์ด๊ฐ๋ฉฐ
ํ์ฌ์์ Confluent๋ก Kafka ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๊ณ ์๊ณ , CCDAK ์๊ฒฉ์ฆ ์ํ์ ์ค๋นํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ bin/kafka-topics.sh
๋ช
๋ น์ด์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ํ๊ธฐ ์ ์
๋ก์ปฌ์์ Kafka๋ฅผ ์คํํด ํธ์ฆ์จ ํด๋ณด๊ณ ์์ต๋๋ค! ๋ก์ปฌ ๋งฅ๋ถ์ Kafka ํด๋ฌ์คํฐ๋ฅผ ๋ํ๋ก์ด ํ๋ ๋ฐฉ๋ฒ์ โDeploy Kafka on Kubernetes โธโ ํฌ์คํธ์์ ๊ธฐ์ ํ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค! ๋ณธ ํฌ์คํธ๋ ํด๋น ํฌ์คํธ์ ๊ธฐ์ ํ ๋ฐฉ์์ผ๋ก ๋ํ๋ก์ดํ Kafka ํด๋ฌ์คํฐ์ Broker ์ค ํ๋์ ์ ์ํด ์งํํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
ํด๋ฌ์คํฐ ์ ์
bitnami-kafka๋ฅผ Authentication ์์ด ์ ์ํ๋ PLAINTEXT
๋ชจ๋๋ก ๋ํ๋ก์ด ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ํ๋ก์ดํ Broker ์ค ํ๋์ kubectl exec
๋ก ์ ์ ํฉ๋๋ค.
$ kubectl exec -it bitnami-kafka-broker-2 -n kafka -- sh
์ฐธ๊ณ ๋ก bitnami-kafka๋ฅผ ๋ํ๋ก์ด ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ Kafka Shell์ด /opt/bitnami/kafka/bin
๊ฒฝ๋ก์ ๋ชจ์ฌ ์์ต๋๋ค! cd
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ์ด ๊ฒฝ๋ก๋ก ํด๋น ๊ฒฝ๋ก๋ก ์ด๋ํด๋ ๋์ง๋ง, Kafka Shell ๋๊ตฌ๋ค์ด ์ด๋ฏธ ๋ฑ๋ก์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌด ๊ฒฝ๋ก์์ ์งํํด๋ ์๊ด ์์ต๋๋ค :)
Kafka Console Producer
$ kafka-console-producer.sh \
--bootstrap-server bitnami-kafka:9092 \
--topic test
> haha
> hoho
Kafka ํด๋ฌ์คํฐ๋ฅผ ํ ์คํธ ํ ๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ ๋ช ๋ น์ด ์ ๋๋ค. ์ ๋ช ๋ น์ด๋ฅผ ํตํด ์์ฃผ ์ฝ๊ฒ ๋๋ฏธ ๋ฐ์ดํฐ๋ฅผ ํ ํฝ์ ์ ์ฌํ๊ณ ํ์ธํด๋ณผ ์ ์์ต๋๋ค.
๋ค๋ง, ์์ ๋ช
๋ น์ด๋ ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋, key๋ฅผ ์ค์ ํ์ง ์๊ณ NULL
๊ฐ์ผ๋ก ๋ณด๋ด๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ ์ฝ๋๋ Round Robin ๋ฐฉ์์ผ๋ก ํ ํฝ์ ํํฐ์
์ค ํ๋์ ์ ์ฌ ๋ฉ๋๋ค. ๊ทธ๋์
$ kafka-console-producer.sh \
--bootstrap-server bitnami-kafka:9092 \
--topic test \
--property key.separator=:
> haha:haha
> hoho:hoho
์๋ ๊ฒ key.separator
๋ฅผ ์ค์ ํ๋ฉด key ๊ฐ์ ํจ๊ป ๋ณด๋ผ ์ ์์ต๋๋ค.
Kafka Console Consumer
$ kafka-console-consumer.sh \
--bootstrap-server bitnami-kafka:9092 \
--topic test \
--from-beginning
haha
hoho
ha:ha
ho:ho
kafka-console-consumer.sh
๋ ์ฝ์๋ก Kafka ํ ํฝ์ ๋ด์ฉ์ ํ์ธํ๋ ๋๊ตฌ ์
๋๋ค. --from-beginning
์ต์
์ ์ฃผ๋ฉด, ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ์๋ถํฐ ์ฝ์ด์ต๋๋ค.
๊ทธ์ธ์๋ --partition
์ต์
์ผ๋ก ํน์ ํํฐ์
์ ์ ์ฅ๋ ๋ ์ฝ๋๋ง ์ฝ์ ์๋ ์์ต๋๋ค.
$ kafka-console-consumer.sh \
--bootstrap-server bitnami-kafka:9092 \
--topic test \
--group console
...
๋, ํ๋ ์ ์ฉํ ์ต์
์ Consoler Consumer๋ฅผ ์ปจ์๋จธ ๊ทธ๋ฃน์ผ๋ก ์ทจ๊ธํ๊ฒ ํ๋ --group
์ต์
์
๋๋ค. ์ด ์ต์
์ ์ฌ์ฉํ๋ฉด, Console Consumer ์์ฒด๋ก ์ด๋ค์ง ์ปจ์๋จธ ๊ทธ๋ฃน๊ฐ ์์ฑ๋๋ฉฐ, ๊ทธ ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์ด๋๊น์ง ์ฝ์๋์ง Offset ์ ๋ณด๊ฐ Kafka ํด๋ฌ์คํฐ์ Offset ํ ํฝ์ ์ ์ฅ๋ฉ๋๋ค.
์ค์ ๋ก ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์์ฑ๋๊ฒ ๋ง๋์ง ํ์ธํ๋ ค๋ฉด kafka-consumer-groups.sh
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
$ kafka-consumer-groups.sh \
--bootstrap-server bitnami-kafka:9092 \
--list
console
console-consumer-9123
console-consumer-88809
$ kafka-consumer-groups.sh \
--bootstrap-server bitnami-kafka:9092 \
--describe \
--group console
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
console test 0 5 5 0 console-consumer-7c2f547f-2d90-48cc-9aab-19b779cec481 /10.42.0.78 console-consumer