Bull Queue

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Bull Queue لـ TypeScript: قائمة مهام قوية

Bull Queue هي مكتبة شائعة لإدارة قوائم المهام في Node.js، مكتوبة بلغة TypeScript. وهي تعتمد على Redis وتوفر طريقة موثوقة لمعالجة المهام الخلفية مثل إرسال البريد الإلكتروني، وإنشاء التقارير، ومعالجة الصور، وغيرها من العمليات التي لا ينبغي أن تعيق التدفق الرئيسي للتطبيق. تدعم Bull Queue الأولويات، والتأخيرات، وإعادة المحاولات، والمراقبة عبر واجهة ويب.

لماذا نحتاج Bull Queue؟

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

التثبيت

لتثبيت Bull Queue، قم بتنفيذ الأمر التالي:

npm install bull

ستحتاج أيضًا إلى Redis. تأكد من أن Redis قيد التشغيل محليًا أو متاح عن بُعد. بالنسبة لـ TypeScript، قم بتثبيت الأنواع الإضافية:

npm install @types/bull

الوظائف الأساسية

  • إنشاء قوائم المهام: أنشئ قوائم مهام بسهولة بإعدادات مختلفة.
  • إضافة المهام: أضف مهامًا مع البيانات والخيارات (الأولوية، التأخير، المحاولات).
  • المعالجات: حدد دوال لمعالجة كل مهمة.
  • إعادة المحاولات: إعادة تلقائية عند حدوث أخطاء باستراتيجية قابلة للتخصيص.
  • المراقبة: واجهة ويب مدمجة لعرض حالة قوائم المهام (عبر حزمة bull-board).

مثال على كود TypeScript

import Queue from 'bull';

// إنشاء قائمة مهامconst emailQueue = new Queue('email', { redis: { host: 'localhost', port: 6379 }});

// إضافة مهمةemailQueue.add({ to: 'user@example.com', subject: 'مرحبًا!' }, { attempts: 3, delay: 5000 // تأخير 5 ثوانٍ});

// معالج المهمةemailQueue.process(async (job) => { console.log('جارٍ إرسال البريد الإلكتروني إلى:', job.data.to); // هنا كود إرسال البريد await sendEmail(job.data.to, job.data.subject);});

// معالجة الإكمالemailQueue.on('completed', (job) => { console.log('تم إنجاز المهمة:', job.id);});

emailQueue.on('failed', (job, err) => { console.error('خطأ:', err);});

متى تستخدم

Bull Queue مثالية لـ:

  • إرسال البريد الإلكتروني أو الرسائل النصية القصيرة (SMS).
  • إنملاذ PDF أو التقارير.
  • معالجة الملفات المرفوعة (صور، فيديوهات).
  • تنفيذ المهام الدورية (مهام cron).
  • التكامل مع واجهات برمجة التطبيقات الخارجية مع تحديد السرعة.

إذا كان مشروعك على TypeScript يتطلب معالجة موثوقة للمهام الخلفية، فإن Bull Queue هي خيار ممتاز بفضل بساطتها وأدائها وتكاملها مع Redis.

توصيات