Core Idea
RabbitMQ = Message Queue (task processing)
So sánh tổng quan
| RabbitMQ | Kafka |
| Model | Message queue | Distributed log (event stream) |
| Data retention | Xóa sau khi consume | Lưu theo time/size |
| Replay message | no | yes |
| Throughput | Medium | Very high |
| Latency | Thấp | Thấp (nhưng batch-based) |
| Ordering | Per queue | Per partition |
| Scale | Limited hơn | Scale rất tốt |
| Consumer model | Push | Pull |
| Use case | Task queue | Data streaming |
Message Handling
RabbitMQ
Producer → Queue → Consumer → ACK → Delete
-
Message bị xóa sau khi consume
-
Broker quản lý delivery
Kafka
Producer → Topic (log)
Consumer → read by offset
-
Message không bị xóa sau consume
-
Consumer tự quản lý offset
Delivery Semantics
| RabbitMQ | Kafka |
| At-most-once | ✅ | ✅ |
| At-least-once | ✅ | ✅ |
| Exactly-once | ❌ | ✅ |
Use Cases
RabbitMQ (Task-based)
-
Email sending
-
Background jobs
-
Payment processing
-
Retry queue / DLQ
Kafka (Event-based)
-
User activity tracking
-
Log aggregation
-
Event sourcing
-
Real-time analytics
Architecture mindset
RabbitMQ
-
Smart broker
-
Consumer đơn giản
-
Dumb broker
-
Consumer thông minh
Scaling
RabbitMQ
-
Scale bằng:
-
Bottleneck khi traffic lớn
Kafka
Trade-offs
RabbitMQ
-
Dễ dùng
-
Routing linh hoạt (exchange)
-
Không replay
-
Không phù hợp big data
Kafka
-
Throughput cực cao
-
Replay & event sourcing
-
Setup phức tạp
-
Debug khó hơn
Khi nào dùng cái nào?
⇒ Chọn RabbitMQ khi:
-
Task processing (job queue)
-
Cần routing phức tạp (exchange)
-
System nhỏ–trung bình
-
Cần retry / DLQ đơn giản
⇒ Chọn Kafka khi:
-
Event-driven architecture
-
Big data / streaming
-
Nhiều consumer đọc cùng data
-
Cần replay / audit log