const { Queue } = require('bullmq'); const IORedis = require('ioredis'); // Cấu hình kết nối Redis (Mặc định localhost:6379) const connection = new IORedis({ maxRetriesPerRequest: null }); /** * Khởi tạo hàng đợi xử lý ảnh */ const imageQueue = new Queue('image-processing', { connection, defaultJobOptions: { attempts: 3, // Thử lại tối đa 3 lần nếu lỗi backoff: { type: 'exponential', delay: 5000 }, // Tự động dọn dẹp Job để tối ưu bộ nhớ Redis removeOnComplete: { age: 1800, // Xóa các job hoàn thành sau 30 phút (1800 giây) để giải phóng RAM nhanh hơn count: 50 // Chỉ giữ 50 job gần nhất (đủ để xem log gần đây) }, removeOnFail: { age: 12 * 3600, // Giữ lại job lỗi trong 12 giờ để admin kiểm tra count: 100 // Giữ tối đa 100 job lỗi } } }); module.exports = { imageQueue, connection };