Apache Kafka ตอนที่ 2 - ลองรันใน docker


จากตอนที่แล้วเราได้รู้ Concepts คล้าวๆ แล้วในตอนนี้เราจะลองใช้งาน Kafka ด้วย Docker กันผ่าน Command มีตัวอย่างการใช้งาน kafka ตั้งแต่ start kafka server, เรียกดูว่ามี topic อะไรบ้างใน kafka server, เพิ่ม topic, เพิ่ม topic แบบมี 2 partition, ตรวจสอบรายละเอียด topic, ลบ topic, ใช้งาน consumer และ producer
Kafka Server
-
โหลดมาก่อน Apache Kafka Docker Image
Terminal window docker pull apache/kafka:4.0.0 -
เปิด Start Server
Terminal window docker run --rm --name broker -p 9092:9092 apache/kafka:4.0.0ตอน Start จะอ่าน Config file ใน Container ที่ path /opt/kafka/config/broker.properties
สำหรับเวอร์ชั่น 4.0.0 จะเป็น mode KRaft ที่ไม่มี Zookeeper
-
เข้าไปใน Container ชื่อ broker โดยเข้าไปที่ path /opt/kafka/bin/ จะมีไฟล์ต่างๆ ให้เราใช้
Terminal window docker exec --workdir /opt/kafka/bin/ -it broker sh# ใช้คำสั่ง ls ดูว่ามีไฟล์อะไรบ้างls -
help ตรวจสอบไฟล์นั้นว่ามีคำส่งอะไรให้ใช้บ้าง
Terminal window ./kafka-topics.sh./kafka-console-consumer.sh./kafka-console-producer.sh -
ดูว่ามี Topic อะไรบ้าง
Terminal window ./kafka-topics.sh --bootstrap-server localhost:9092 --list—bootstrap-server คือ Kafka server ที่เราจะเชื่อมต่อ การใช้งานจริงจะมีอย่างน้อย 3 ตัวเช่น broker-1:9092, broker-2:9092, broker-3:9092 จากตัวอย่างเพื่อให้ง่ายต่อการทดลองจึงมีเพียงแค่ 1 broker
—list คือ คำสั่งที่เรียกดูรายชื่อ Topic ทั้งหทด
-
สร้าง Topic
Terminal window ./kafka-topics.sh --create --topic example-1 --bootstrap-server localhost:9092# สร้างโดยกำหนด partition เป็น 2./kafka-topics.sh --create --topic example-2 --partitions 2 --bootstrap-server localhost:9092—create คือ คำสั่งที่บอกว่าเราต้องการจะสร้าง Topic ใหม่
—topic คือ ระบุ Topic ที่เราจะกระทำ
-
ดูรายละเอียด Topic ว่ามี Partition อะไรบ้าง
Terminal window ./kafka-topics.sh --describe --topic example-1 --bootstrap-server localhost:9092./kafka-topics.sh --describe --topic example-2 --bootstrap-server localhost:9092—describe คือ คำสั่งใช้ดูรายละเอียด topc ที่กำหนด
-
ลบ Topic
Terminal window ./kafka-topics.sh --delete --topic example-1 --bootstrap-server localhost:9092—delete คือ คำสั่งลบ Topic
Consumer
-
เปิดอีก 1 Terminal ใช้สำหรับ Consumer อ่าน Message ใน Topic หลังจากรันคำสั่งนี้โปรแกรมจะ Subscribe topic เพื่อรอรับ Message ถ้าต้องการจบการทำงานกด Ctrl+C
Terminal window ./kafka-console-consumer.sh --topic example-1 --bootstrap-server localhost:9092# อ่านจาก offset แรก./kafka-console-consumer.sh --topic example-1 --from-beginning --bootstrap-server localhost:9092# กำหนด group./kafka-console-consumer.sh --topic example-1 --group shared-group-1 --bootstrap-server localhost:9092—from-beginning คือ คำสั่งกำหนดให้ Consumer อ่าน Message จาก Offset แรก
—group คือ กำหนด group id ให้ Consumer
Producer
-
เปิดอีก 1 Terminal ใช้สำหรับ Producer ส่ง Message ไปยัง Topic หลังจากรันคำสั่งนี้เราจะพิมพ์ข้อมความที่จะส่งได้ ถ้าต้องการจบการทำงานกด Ctrl+C
Terminal window ./kafka-console-producer.sh --topic example-1 --bootstrap-server localhost:9092> hello 1หลังจาก พิมพ์ข้อความเช่น hello 1 แล้วกด Enter เพื่อส่งค่าจะแสดงผลที่ Terminal ของ Consumer