RabbitMQ và Kafka đều là các hệ thống messaging nhưng khác nhau về cơ bản — RabbitMQ là một message broker truyền thống (queue, định tuyến linh hoạt, message được tiêu thụ và xóa), trong khi Kafka là một distributed event log (được giữ lại, có thể replay, streaming thông lượng cao). Chúng phù hợp với các trường hợp sử dụng khác nhau.
Sự khác biệt cơ bản
RABBITMQ → một message BROKER (broker thông minh, consumer đơn giản):
→ message được ĐỊNH TUYẾN qua exchange, được TIÊU THỤ và xóa (tạm thời)
→ ĐỊNH TUYẾN phong phú (loại exchange); xử lý theo từng message; dựa trên push
→ dùng cho: task queue, định tuyến phức tạp, request/reply, messaging truyền thống
KAFKA → một distributed event LOG (broker đơn giản, consumer thông minh):
→ event được GIỮ LẠI (không xóa khi tiêu thụ), có thể replay; dựa trên partition
→ thông lượng rất cao; nhiều consumer đọc cùng dữ liệu; dựa trên pull
→ dùng cho: event streaming, dữ liệu khối lượng lớn, pipeline, giữ lại/replay
