~/VibeHandbook
PDF miễn phí

Chương 14 · 07

Hàng đợi (Queues)

Một hàng đợi () cho phép bạn nói "làm việc này sau" thay vì "làm việc này ngay bây giờ." Khi một người dùng đăng ký, bạn không muốn họ phải chờ trong lúc bạn gửi email chào mừng và thay đổi kích thước ảnh đại diện của họ. Hãy đẩy các công việc đó vào một hàng đợi (RabbitMQ, BullMQ, Cloudflare Queues, SQS); một worker chạy nền sẽ nhặt chúng lên. Người dùng nhận được phản hồi tức thì.

Hãy dùng hàng đợi cho bất kỳ tác vụ nào chậm, có thể thất bại và thử lại, hoặc không cần hoàn tất trước khi bạn phản hồi cho người dùng.

Vướng mắc mà hầu hết người mới gặp phải là một công việc trong hàng đợi có thể chạy nhiều hơn một lần — một trục trặc mạng khiến worker thử lại, và giờ email chào mừng được gửi hai lần. Cách khắc phục là làm cho các công việc trở nên bất biến khi lặp lại (): thiết kế chúng sao cho chạy cùng một công việc hai lần có cùng tác động như chạy một lần (kiểm tra "mình đã gửi cái này chưa?" trước khi gửi). Cũng cần quyết định trước điều gì xảy ra với một công việc cứ liên tục thất bại; các hàng đợi trưởng thành sẽ chuyển nó sang một hàng đợi thư chết (dead-letter queue) để một tin nhắn "độc hại" không chặn đứng mọi thứ phía sau nó.

Muốn bản ngoại tuyến?

Tải trọn cuốn sách dưới dạng PDF hoặc EPUB — miễn phí.