บันทึกการใช้งาน Apache Kafka แบบเร่งรัด
แบบฉบับผู้ใช้ Shell Command
ติดตั้ง 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 ทั้งหมด
bin/kafka-topics.sh --list --zookeeper localhost:2181
สร้าง Topic ใหม่
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 ง่ายๆกันครับ