Lesson 64 — Message Queue (Kafka / NATS)
Ba mô-đun tương tác: (1) Pub/Sub vs Queue — xem 1 message được phân phối thế nào
(chia cho 1 consumer vs broadcast N subscriber); (2) Kafka partition — key → partition
(hash mod N) và rebalance khi đổi số consumer; (3) Delivery guarantees —
chạy kịch bản crash cho at-most / at-least / exactly-once để thấy mất / trùng / đúng.
1. Pub/Sub vs Queue — phân phối message
Cùng một message, hai pattern phân phối khác nhau. Queue: mỗi message tới đúng 1 consumer (chia tải, xoay vòng). Pub/Sub: mỗi message tới mọi subscriber (bản sao). Bấm "Gửi message" nhiều lần để thấy khác biệt.
2. Kafka partition — key routing & consumer group rebalance
Producer chọn partition theo partition = hash(key) mod N. Cùng key → cùng
partition → giữ thứ tự. Đổi số consumer trong group để xem rebalance gán lại partition
(1 partition ↔ tối đa 1 consumer; consumer dư bị idle).
3. Delivery guarantees — kịch bản crash
Consumer: poll → process → commit. Thứ tự commit + thời điểm crash
quyết định kết quả. Chọn mức, bấm "Chạy" để thấy timeline với crash giữa chừng → mất / trùng / đúng.