Đang tải...

Vì Sao Hệ Thống Notification Luôn Cần Queue?

06/05/2026
3 phút đọc
Vì Sao Hệ Thống Notification Luôn Cần Queue?
Khi xây dựng hệ thống notification: * Push notification * SMS * Email * Zalo * Telegram nhiều người thường làm kiểu: ``` User Action ↓ Gửi notification trực tiếp ``` Ban đ?...

Khi xây dựng hệ thống notification:

  • Push notification
  • SMS
  • Email
  • Zalo
  • Telegram

nhiều người thường làm kiểu:

User Action
 ↓
Gửi notification trực tiếp

Ban đầu có thể chạy ổn.

Nhưng khi cần gửi tới:

  • 10.000 user
  • 100.000 devices
  • Hoặc hàng triệu notification

thì hệ thống sẽ nhanh chóng gặp vấn đề:

  • API chậm
  • Request timeout
  • CPU tăng cao
  • Full RAM
  • Crash server

Queue Là Gì?

Queue (hàng đợi) là nơi lưu các job cần xử lý.

Thay vì gửi notification trực tiếp:

User Action
 ↓
Push Job vào Queue
 ↓
Response ngay cho user

Worker phía sau sẽ xử lý việc gửi notification.

Kiến Trúc Cơ Bản

Application
 ↓
Queue
 ↓
Workers
 ↓
Firebase / SMS / Email

Vì Sao Nên Dùng Queue?

  1. API Nhanh Hơn Backend chỉ cần:
push job vào queue

là response ngay cho user.

  1. Chống Quá Tải Queue giúp xử lý notification dần dần thay vì bắn cùng lúc.

Giúp tránh:

  • CPU spike
  • Full RAM
  • Rate limit
  1. Retry Khi Lỗi Ví dụ:
Firebase timeout

Worker có thể retry lại thay vì mất notification. 4. Dễ Scale Không đủ worker:

Worker 1
Worker 2

thì chỉ cần thêm:

Worker 3
Worker 4 

Redis Queue Hoạt Động Thế Nào?

Producer:

await redis.lpush(
 "notification_queue",
 JSON.stringify(data)
);

Worker:

while (true) {
 const job = await redis.brpop("notification_queue");

 await sendNotification(job);
}

RabbitMQ Và Kafka Khác Gì Redis Queue?

Redis Queue

  • Dễ setup
  • Nhanh
  • Phù hợp background job đơn giản

RabbitMQ

  • Retry mạnh
  • ACK message
  • Ổn định cho notification

Kafka

  • Throughput cực lớn
  • Event streaming
  • Scale mạnh

Một Số Queue Thường Có

  • Retry queue
  • Delay queue
  • Dead letter queue
  • Priority queue

Kết Luận

Queue gần như là thành phần bắt buộc trong các hệ thống notification hiện đại.

Nó giúp:

  • API nhanh hơn
  • Hệ thống ổn định hơn
  • Retry tốt hơn
  • Dễ scale hơn

Tư tưởng chung là:

Không xử lý nặng trực tiếp trong request

mà hãy:

đẩy vào queue và xử lý phía sau

📚 Nguồn: Viblo

Chia sẻ bài viết

Cần tư vấn?

Liên hệ với chúng tôi để được hỗ trợ

Liên hệ ngay

Bài viết liên quan

Tích hợp đa ngôn ngữ vào Next.js (App Router)
06/05/2026

Tích hợp đa ngôn ngữ vào Next.js (App Router)

![image.png](https://images.viblo.asia/b7071922-d902-468b-99ef-953e94eee8c5.png) ## Giới thiệu Khi xây dựng các dự án hướng đến thị trường toàn cầu hoặc các dịch vụ c?...

Đọc thêm
Hướng dẫn cài đặt Synology Office MCP Server: cho Claude "đọc — ghi" trực tiếp NAS Synology
06/05/2026

Hướng dẫn cài đặt Synology Office MCP Server: cho Claude "đọc — ghi" trực tiếp NAS Synology

Nếu bạn đang dùng Synology NAS làm nơi lưu trữ chính cho tài liệu, bảng tính, email, lịch — và bạn cũng đang xài Claude Desktop hoặc Claude Code hằng ngày — thì s?...

Đọc thêm
Bạn đã thực sự sử dụng đúng Zustand
06/05/2026

Bạn đã thực sự sử dụng đúng Zustand

![image.png](https://images.viblo.asia/5d7a4e23-2cd7-4236-bb09-56a9e91e2f1e.png) ## Đặt vấn đề Khi app React lớn dần, bạn sẽ gặp tình trạng "prop drilling" — truyền state qua ...

Đọc thêm

Bắt đầu dự án của bạn

Hãy để Flash Dev đồng hành cùng bạn

Liên hệ ngay