عندما تصبح عملية ما أبطأ من أن تبقى داخل HTTP request، لا يكفي نقلها إلى Queue فقط؛ يجب تصميمها لتتحمل التكرار والانقطاع وإعادة المحاولة.
متى أستخدم Background Job؟
استخدم Job عندما تكون العملية مثل:
- إرسال بريد أو Push Notification.
- توليد تقرير أو PDF.
- معالجة صور أو ملفات.
- مزامنة بيانات مع نظام خارجي.
- تنفيذ مهمة مجدولة.
مسار التنفيذ
Producer واضح وصغير
Worker آمن عند التكرار
Retry ليس حلًا لكل خطأ
| الخطأ | الإجراء المناسب |
|---|---|
| Timeout مؤقت | Retry مع Backoff |
| 429 Rate limit | Retry بعد تأخير |
| Validation داخلي | Fail بدون Retry |
| Resource deleted | تعامل كحالة نهائية |
| External outage | Retry + Alert بعد حد معين |
مراقبة الطابور
- عدد Jobs المنتظرة
- عدد Failed jobs
- مدة التنفيذ p95
- Retry count
- Alert عندما يتجاوز Queue lag حدًا تشغيليًا
يمكن دمج هذا النمط مع بنية SaaS قابلة للتوسع بدل إبقاء العمليات الثقيلة داخل الـ API.
الهدف ليس «استخدام Queue»، بل جعل الفشل متوقعًا وقابلًا للاسترداد.