+6

Kafka - Tạo topic, publish/subcribe message (Part 3)

Hellu, Toni Dev đây 😁. Ở part 2 thì chúng ta đã cùng nhau tìm hiểu về Partition, Offset & Consumer Group trong series Kafka. Hôm nay chúng ta sẽ tiếp tục part 3 để cùng nhau thực hành (practice) nhé.

1. Install Kafka

  • Đầu tiên các bạn download file theo đường link này
  • Sau đó giải nén nó và cd (change directory) vào folder mà bạn vừa giải nén bằng command line:

tar -xzf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1

  • Tới đây các bạn có thể dùng VSCode để mở folder kafka_2.13-3.6.1 và xem trong đó có gì. Trong folder này thì có rất nhiều file bash script nhưng sẽ có 1 số file quan trọng như dưới đây, nhìn filename thôi là biết nó dùng để làm gì rồi đúng không nào 👋 Các bạn có thể update những file này hoặc những file trong folder config nếu muốn, nhưng việc đó để sau và hiện tại mình cứ giữ nguyên đã nhé.

kafka-server-start.sh
kafka-server-stop.sh
kafka-topics.sh
zookeeper-server-start.sh
zookeeper-server-stop.sh

2. Start kafka enviroment with Zookeeper

  • Trước tiên trên máy cần install Java 8+, bạn có thể sử dụng brew (for mac), apt-get (for lunix) hoặc cũng có thể down trực tiếp file về và giải nén nó ra để install.
  • Start Zookeeper service:

bin/zookeeper-server-start.sh config/zookeeper.properties

  • Start Broker service:

bin/kafka-server-start.sh config/server.properties

  • Trong suốt quá trình practice thì bạn đừng tắt 2 services này nhé. Không là chẳng có Zookeeper và Broker cho các bạn dùng đâu :v

image.png

3. Create & decribe topic

  • Create a topic:

bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092

  • Describe info a topic:

bin/kafka-topics.sh --describe --topic my-topic --bootstrap-server localhost:9092

  • Lưu ý: my-topic ở đây chính là topic_name, bạn có thể đặt tùy ý nhưng không được đặt tên các topic trùng nhau (bởi vì nó sẽ báo error ngay 🤣)

image.png

  • Sau khi dùng cmd để describe 1 topic thì ta có thể xem được 1 vài info của topic như (Partition: 0, Leader: 0, Replicas: 0, ...). Những info này tạm thời mình cứ skip đã nhé, nó hơi nâng cao và nếu có thời gian thì mình sẽ tìm hiểu nó kỹ hơn.

4. Producer publish message

  • Producer publish message vào topic có name là my-topic:

bin/kafka-console-producer.sh --topic my-topic --bootstrap-server localhost:9092

  • Sau khi run cmd trên các bạn hãy enter bất kì message nào để test nó. Nhớ Ctrl + C để exit nhé 😅

image.png

5. Consumer subcribe message

  • Consumer subcribe message từ topic có tên là my-topic:

bin/kafka-console-consumer.sh --topic my-topic --from-beginning --bootstrap-server localhost:9092

image.png

  • Bây giờ từ vị trí là consumer, chúng ta đã có thể read toàn bộ message từ my-topic 👌

6. Summary

image.png

  • Bài này mình đã cùng các bạn practice kafka, cụ thể là start zookeeper, start broker, tạo topic, publish/subcribe message ở trên Terminal.
  • part 4 chúng ta cùng nhau tạo Consumer Groupread message từ Partition, Offset cụ thể (thay vì read message từ 1 topic).
  • Cảm ơn các bạn đã đọc đến đây, nếu có góp ý hay thắc mắc gì thì hãy comment phía dưới để chúng ta cùng upgrade nhé 😁

Reference:


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí