บันทึกการใช้งาน Apache Kafka แบบเร่งรัด

แบบฉบับผู้ใช้ Shell Command

Kafka ด่วนๆ ภายใน 5 นาทีพร้อมกิน

ติดตั้ง Apache ZooKeeper และ Apache Kafka

version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:0.10.2.0-1
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.102 // My IP Address
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock

วิธีการรัน ก็แค่

docker-compose up

ดู docker-compose ต้นทางที่ https://github.com/wurstmeister/kafka-docker/blob/master/docker-compose.yml หรือ https://github.com/jet/Microservice-Edge-Testing-Example/blob/master/docker-compose.yml

ZooKeeper คืออะไร HortonWorks, Tutorialspoint อันนี้ผมแนะนำจะเข้าใจ Workflow ด้วย

Apache Kafka คืออะไร HortonWorks, HowtoAutomate.in.th, Neng Liangpornrattana

ดาว์นโหลด Apache Kafka Shell Script

ให้ดาวน์โหลดแบบ Binary นะ อย่าเลือกแบบ source-file เดี๋ยวจะติดสตันแบบผม ตอนรัน

https://www.apache.org/dyn/closer.cgi?path=/kafka/1.1.0/kafka_2.11-1.1.0.tgz

ต่อจากนี้ จะเป็นการใช้ Shell Command นะครับ

เรียกดู Topic ทั้งหมด

Topic ทั้งหมด
bin/kafka-topics.sh --list --zookeeper localhost:2181

สร้าง Topic ใหม่

Topic กระจายตัวไป Partition ตามที่กำหนด และ ทำ Replica 1 node
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hello-kafka

Producer เริ่ม Send Message

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello-kafka>Hello abcd
>Hello 1234 // message ของเรา

Consumer รอรับ Message

โดย Subscribe Topic hello-kafka

bin/kafka-console-consumer.sh --zookeeper localhost:2181 -topic hello-kafka --from-beginning

ผลลัพธ์ที่เกิดขึ้น

Delete Topic ที่ต้องการ

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic hello-kafka

Describe Topic ที่ระบุ

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-kafka

ในบทความนี้เป็นเพียงเคสง่ายๆ เพียงแค่ Single Message Broker ในการใช้งานจริง เราไม่ได้ใช้เพียงแค่ 1 Node อยู่แล้ว เราจะใช้ Multi-Message Broker แทน และวิธีก็แตกต่างกันออกไป จึงต้องมี ZooKeeper ไว้จัดการ ซึ่งจะกล่าวเป็น Topic ถัดไป

รวมไปถึง Topic หน้าจะเป็นการสร้าง Node.js App หรือ Golang App สักตัว เพื่อเอาไว้ Publisher and Subscribe Topic ง่ายๆกันครับ

--

--

Teerapong Singthong 👨🏻‍💻
Teerapong Singthong 👨🏻‍💻

Written by Teerapong Singthong 👨🏻‍💻

Engineering Manager, ex-Solution Engineering Lead at LINE | Tech | Team Building | System Design | Architecture | SWE | Large Scaling System

No responses yet