فاينفرفاينفر
EN
برمجة 2 min read

BullMQ وBull-Board مع NestJS — تحكّم كامل في معالجة الطوابير

Aysha Farha

Aysha Farha

February 11, 2025

هل عانيت يوماً من تشغيل وصيانة عدد كبير من السكربتات؟ BullMQ هنا ليسهّل حياتك!

إدارة المهام الخلفية والعمليات غير المتزامنة أساسية لبناء تطبيقات قابلة للتوسع وسريعة الاستجابة. يوفر NestJS بأسلوبه المعياري وميزاته القوية أساساً ممتازاً لذلك. في هذا المقال نستكشف كيفية استخدام BullMQ وBull-Board داخل مشروع NestJS للتحكّم الكامل في معالجة الطوابير.

لماذا تهم الطوابير

تخيّل أن تطبيقك يحتاج لإرسال بريد أو معالجة صور أو مهام أخرى تستغرق وقتاً. تنفيذها بشكل متزامن قد يعيق الخيط الرئيسي ويؤدي لاستجابة بطيئة وتجربة مستخدم سيئة. تحل الطوابير هذه المشكلة بنقل المهام إلى عمليات خلفية. يمكن للتطبيق إضافة مهمة للطابور بسرعة ومتابعة الطلبات الأخرى، بينما يعالج عامل المهام في الخلفية.

ادخل BullMQ وBull-Board

  • BullMQ: مكتبة طوابير قوية وموثوقة لـ Node.js مبنية فوق Redis. توفّر أولوية المهام وإعادة المحاولة وتحديد المعدل والمزيد.

  • Bull-Board: واجهة ويب جميلة وبديهية لمراقبة وإدارة طوابير BullMQ. تعطيك نظرة فورية على حالة الطابور لتتبع تقدّم المهام وإعادة الفاشلة وحتى إيقاف أو استئناف الطوابير.

تكامل NestJS: التطابق المثالي

تصميم NestJS المعياري يجعل دمج BullMQ وBull-Board سهلاً. يمكننا إنشاء وحدات مخصصة للطوابير وتعريف معالجات المهام وعرض Bull-Board للمراقبة بسهولة.

إعداد المشروع (مبسط)

لنمرّ على إعداد أساسي. للمثال الكامل العامل راجع مستودع GitHub.

ستُحفظ سجلات نجاح/خطأ الطابور أيضاً في MongoDB.

الفوائد الرئيسية

  • أداء أفضل: نقل المهام الثقيلة إلى الخلفية.

  • قابلية توسع محسّنة: التعامل مع عدد كبير من المهام بكفاءة.

  • موثوقية أعلى: ميزات BullMQ تضمن تسليم المهام وتمنع فقدان البيانات.

  • مراقبة سهلة: Bull-Board يعطي نظرة واضحة على حالة الطابور.

  • تجربة مستخدم أفضل: إبقاء التطبيق مستجيباً ومنع حجب الخيط الرئيسي.

ما بعد الأساسيات

هذه نقطة بداية فقط. تقدّم BullMQ وBull-Board ميزات متقدمة كثيرة، منها:

  • جدولة المهام: جدولة مهام في أوقات محددة.

  • تحديد المعدل: التحكم بسرعة معالجة المهام.

  • إعادة محاولة المهام: إعادة محاولة الفاشلة تلقائياً.

  • Webhooks: استلام إشعارات بتغيّر حالة المهام.

الخلاصة

بدمج BullMQ وBull-Board في مشاريع NestJS يمكنك التحكّم الكامل في معالجة الطوابير. هذا المزيج يمكّنك من بناء تطبيقات قابلة للتوسع وموثوقة وعالية الأداء. استكشف مستودع GitHub للمثال الكامل وابدأ بالتحكّم في مهامك الخلفية!

Tags:#BullMq