Cách xây dựng message queue với RabbitMQ trong ứng dụng Node.js: gửi email thông báo, tạo file nén PDF và xử lý đơn hàng không làm nghẽn main thread.
Trong các ứng dụng quy mô lớn, việc bắt người dùng chờ đợi một request đồng bộ hoàn thành các tác vụ nặng (như gửi email, resize hàng loạt ảnh hay xuất file báo cáo Excel) sẽ làm trải nghiệm người dùng giảm sút nghiêm trọng.
Với kiến trúc Event-Driven, web server chỉ cần tiếp nhận request của khách hàng, đẩy một payload nhỏ vào Message Queue (RabbitMQ) và phản hồi ngay 202 Accepted. Một hoặc nhiều Worker phía sau sẽ tiêu thụ (consume) thông điệp và xử lý ngầm trong nền.
import amqp from 'amqplib';
export async function publishOrderEvent(orderData: any) {
const connection = await amqp.connect(process.env.RABBITMQ_URL || 'amqp://localhost');
Đặt câu hỏi, chia sẻ ý kiến hoặc góp ý giải pháp kỹ thuật cùng cộng đồng.