~/VibeHandbook
PDF miễn phí

Cloudflare

developers.cloudflare.com

Queues

Đây là gì

Hãy nghĩ đến một quán cà phê: bạn đặt món ở quầy rồi đi chỗ khác, còn nhân viên pha chế thì lần lượt xử lý từng phiếu order một. Một hàng đợi () chính là dãy phiếu order đó. Cloudflare Queues là một hàng đợi tin nhắn (message queue) được quản lý sẵn dành cho Workers, xây dựng trên ý tưởng này. Một Worker đưa tin nhắn vào hàng đợi (bên sản xuất — producer, giống như thu ngân nhận order); một Worker khác được giao từng lô tin nhắn để xử lý (bên tiêu thụ — consumer, giống như nhân viên pha chế). Cách này giúp bạn tách phần việc chậm hoặc không ổn định ra khỏi request đã kích hoạt nó — nhận request thật nhanh, còn việc xử lý thì làm ở phía sau.

Điểm mạnh

  • Tách rời producer khỏi consumer, giúp làm mượt các đợt tăng đột biến lưu lượng.
  • Tự động gom lô (batching), tự động thử lại (retries), và có dead-letter queue (khu vực giữ lại những tin nhắn cứ liên tục thất bại) để không tin nhắn nào bị mất âm thầm.
  • Tích hợp thuần Workers — cả producer lẫn consumer đều là Workers có binding.
  • Không cần vận hành hạ tầng riêng; tự động mở rộng theo lưu lượng của bạn.
  • Đảm bảo giao ít nhất một lần (at-least-once delivery) để tin nhắn không bị mất âm thầm.

Đánh đổi

  • Giao ít nhất một lần nghĩa là consumer cần — tức là chạy hai lần trên cùng một tin nhắn vẫn an toàn, không gây hại gì (phải xử lý được trường hợp trùng lặp).
  • Không phù hợp cho phản hồi tức thời, đồng bộ — công việc được xử lý bất đồng bộ.
  • Thứ tự chỉ mang tính "cố gắng hết sức" (best-effort), không phải một thứ tự toàn cục nghiêm ngặt.
  • Thông lượng (throughput) và kích thước tin nhắn đều có giới hạn cần tính toán trước.

Khi nào nên dùng

Dùng Queues cho các tác vụ chạy nền: gửi email, xử lý file tải lên, gọi các (Application Programming Interface — giao diện lập trình ứng dụng, tức các điểm cuối dùng để giao tiếp với dịch vụ khác) bên thứ ba chậm, phân phối ra nhiều nơi, hoặc đệm các thao tác ghi dữ liệu — nói chung là bất cứ việc gì bạn không muốn bắt người dùng phải chờ.

Phù hợp với vibe coding ra sao

Queues là cách gọn gàng để một thêm khả năng xử lý nền mà không cần dựng hẳn một broker riêng. Hãy yêu cầu agent làm cho consumer idempotent (dùng một khóa tin nhắn — message key) và thiết lập dead-letter queue để các lỗi không bị giấu đi. Cấu hình dưới đây gán một Worker duy nhất đóng cả vai producer lẫn consumer của một hàng đợi.

# wrangler.toml
[[queues.producers]]
queue = "jobs"
binding = "JOBS"

[[queues.consumers]]
queue = "jobs"
max_batch_size = 10
dead_letter_queue = "jobs-dlq"
npx wrangler queues create jobs
npx wrangler deploy