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

كيفية تثبيت BullMQ في NestJS (دليل بسيط)

Aysha Farha

Aysha Farha

April 8, 2026

دليل بسيط لتثبيت واستخدام BullMQ في مشروع NestJS لمعالجة المهام الخلفية مثل إرسال البريد ومعالجة الصور دون إبطاء تطبيقك.

في هذا الدليل سأوضح كيفية تثبيت واستخدام BullMQ في مشروع NestJS. يُستخدم BullMQ لمعالجة المهام الخلفية مثل إرسال البريد ومعالجة الصور أو تشغيل مهام ثقيلة دون إبطاء تطبيقك.

عينة عمل: https://github.com/habilm/bullmq-nestjs


الخطوة 1: تثبيت الحزم المطلوبة

أولاً، ثبّت BullMQ وعميل Redis:

npm install bullmq ioredis

الخطوة 2: إعداد Redis

يحتاج BullMQ إلى Redis ليعمل.

يمكنك:

  • تثبيت Redis محلياً

  • أو استخدام خدمة Redis سحابية

مثال (Redis محلي افتراضي):

host: localhost
port: 6379

الخطوة 3: إنشاء طابور

أنشئ ملفاً مثل queue.ts:

import { Queue } from 'bullmq';
import { Redis } from 'ioredis';

const connection = new Redis({
  host: 'localhost',
  port: 6379,
});

export const emailQueue = new Queue('email-queue', {
  connection,
});

الخطوة 4: إضافة مهمة للطابور

يمكنك إضافة مهام من خدمتك:

await emailQueue.add('send-email', {
  to: 'test@example.com',
  subject: 'Hello',
});

الخطوة 5: إنشاء عامل (Worker)

يعالج العامل المهمة في الخلفية.

أنشئ worker.ts:

import { Worker } from 'bullmq';
import { Redis } from 'ioredis';

const connection = new Redis({
  host: 'localhost',
  port: 6379,
});

const worker = new Worker(
  'email-queue',
  async job => {
    console.log('Processing job:', job.name);
    console.log(job.data);

    // مثال: منطق إرسال البريد هنا
  },
  { connection },
);

الخطوة 6: تشغيل العامل

شغّل العامل بشكل منفصل:

node worker.js

الخطوة 7: الاستخدام في خدمة NestJS

مثال خدمة:

import { Injectable } from '@nestjs/common';
import { emailQueue } from './queue';

@Injectable()
export class AppService {
  async sendEmail() {
    await emailQueue.add('send-email', {
      to: 'user@gmail.com',
      subject: 'Welcome',
    });
  }
}

نصائح

  • شغّل العامل دائماً في عملية منفصلة

  • استخدم الطابور للمهام الثقيلة أو البطيئة

  • يمكنك إعادة محاولة المهام الفاشلة بخيارات BullMQ

  • استخدم عدة عمال لأداء أفضل


الخلاصة

الآن دمجت بنجاح BullMQ مع NestJS. هذا يساعد تطبيقك على البقاء سريعاً بنقل المهام الثقيلة إلى الخلفية.

يمكنك توسيع هذا لـ:

  • إرسال البريد

  • معالجة الصور

  • الإشعارات

  • مهام مزامنة البيانات

إذا أردت عرض جميع الطوابير وإدارتها في لوحة تحكم استخدم Bull Board

Related Blogs

Related Blogs

لقد أنشأنا NestJs DuckDB: تكامل بسيط لـ DuckDB مع NestJS
برمجة
July 23, 2026

لقد أنشأنا NestJs DuckDB: تكامل بسيط لـ DuckDB مع NestJS

كمطورين، نستخدم غالبًا قواعد بيانات مثل PostgreSQL أو MySQL أو MongoDB عند بناء تطبيقات الواجهة الخلفية باستخدام NestJS. ولكن ليست كل مشكلة بيانات تتطلب إعداد قاعدة بيانات تقليدية.

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

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

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

كيفية إعداد Bull Board في NestJS (دليل بسيط)
برمجة
April 9, 2026

كيفية إعداد Bull Board في NestJS (دليل بسيط)

دليل بسيط لإعداد Bull Board في مشروع NestJS لمراقبة طوابير BullMQ من لوحة تحكم ويب.