BullMQ يدير كل الـ jobs الخلفية. عندنا 4 queues، كل واحدة لها processor وحياة مستقلة. مراقبتها live في /automation/queues.
| الـ Queue | الـ Processor | Concurrency | الغرض |
|---|---|---|---|
workflow-runs | WorkflowRunsProcessor | 5 | تنفيذ workflows الأتمتة (Day 5+). |
scheduled-tasks | ScheduledTasksProcessor | 3 | مهام مجدولة من الوكلاء عبر schedule_task. |
agent-execution | AgentWorker | 5 | تنفيذ مهام راشد (HermesTask). |
hermes-main | — | — | قناة رئيسية للأوامر التنفيذية (متاحة للتوسّع). |
إعدادات افتراضية
- Attempts: 3 (مع exponential backoff)
- Backoff delay: 2000 ms
- removeOnComplete: آخر 100
- removeOnFail: آخر 50
Idempotency
الـ workflow-runs processor فيه idempotency guard: لو الـ run في حالة terminal (SUCCESS/FAILED/CANCELLED) ووصل retry، يتجاهله. يمنع الـ status flapping عند الأخطاء الـ deterministic.
Redis
نفس Redis instance يحمل: BullMQ queues + cache (TTL 300s افتراضي) + sessions. الاتصال: redis://localhost:6379. للمراقبة العميقة:redis-cli MONITOR.
الـ Jobs المؤجّلة (Delayed)
BullMQ يدعم delay على الـ job. WaitAction للمدد >60 ثانية يستفيد منها — لا يبلكي worker مدّة طويلة، بدلاً من ذلك يضيف job جديد resume بـ delay.