Kafka khác với các message queue truyền thống (như RabbitMQ) ở những điểm then chốt — nó là một log phân tán giữ lại sự kiện (thay vì xóa khi tiêu thụ), hỗ trợ replay, cung cấp thông lượng rất cao, và dùng mô hình kéo (pull-based), dựa trên partition. Hiểu những khác biệt này làm rõ khi nào nên dùng cái nào.
Các khác biệt then chốt
HÀNG ĐỢI TRUYỀN THỐNG (ví dụ RabbitMQ) → tin nhắn thường bị XÓA sau khi tiêu thụ:
→ một tin nhắn đi tới một consumer và bị loại bỏ (tạm thời)
→ thường push-based; routing phong phú; acknowledgment theo từng tin nhắn
KAFKA → một LOG sự kiện bền vững, được giữ lại:
→ sự kiện được LƯU (giữ lại trong một khoảng thời gian), KHÔNG bị xóa khi tiêu thụ
→ nhiều consumer/group có thể đọc CÙNG sự kiện một cách độc lập
→ REPLAY → đọc lại các sự kiện quá khứ (tua về bất kỳ offset nào)
→ pull-based; sắp xếp thứ tự và mở rộng dựa trên partition; thông lượng rất cao
