Blog About
Table of Contents
  • Kafka Server
  • Consumer
  • Producer
  • อ่านเพิ่ม

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

Apisit N.
18 May 2025

จากตอนที่แล้วเราได้รู้ Concepts คล้าวๆ แล้วในตอนนี้เราจะลองใช้งาน Kafka ด้วย Docker กันผ่าน Command มีตัวอย่างการใช้งาน kafka ตั้งแต่ start kafka server, เรียกดูว่ามี topic อะไรบ้างใน kafka server, เพิ่ม topic, เพิ่ม topic แบบมี 2 partition, ตรวจสอบรายละเอียด topic, ลบ topic, ใช้งาน consumer และ producer

Apache Kafka ตอนที่ 1
Apache Kafka คือแพลตฟอร์มสำหรับการส่งข้อมูลแบบ Event Streaming โดยทั่วไปในการสื่อสารระหว่างระบบเราใช้ REST API เพื่อให้ Client ส่งข้อมูลตรงไปยัง Server ปลายทาง
18 May 2025

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

อ่านเพิ่ม

  • https://hub.docker.com/r/apache/kafka
  • https://kafka.apache.org/documentation/#quickstart_download
© 2025 Apisit N.