Cả hai giúp các thành phần giao tiếp bất đồng bộ, decouple producer khỏi consumer.
- Message queue (point-to-point): message vào hàng đợi, một consumer trong nhóm lấy và xử lý mỗi message (chia việc). Ví dụ: RabbitMQ, SQS. Hợp với task/job.
- Pub/Sub (fan-out): producer publish vào topic, mọi subscriber đều nhận bản sao. Ví dụ: Kafka, Google Pub/Sub. Hợp với phát sự kiện cho nhiều hệ tiêu thụ.
Lợi ích chung:
- Giảm ghép nối và chịu tải đột biến (buffer khi consumer chậm).
- Độ bền: message được lưu, consumer chết vẫn xử lý lại được.
- Khả năng mở rộng: thêm consumer để tăng throughput.
Đổi lại: thêm hạ tầng, tính eventual và cần xử lý message trùng (idempotency).