يحفظ التطبيق طلبًا داخل معاملة قاعدة بيانات ويرسل مهمة لإرسال إشعار. إذا بدأ العامل مبكرًا، قد يبحث عن طلب لم يعتمد بعد. وإذا تراجعت المعاملة لاحقًا، قد يصل إشعار عن عملية لم تتم. معالجة هذا التوقيت تحتاج اختبارًا صريحًا، لا مجرد تجربة ناجحة حين يكون الخادم هادئًا.
اعرف ما الذي يؤخره afterCommit
توضح وثائق Laravel 13 للطوابير أن إعداد after_commit يؤخر إرسال المهام حتى اعتماد المعاملات المفتوحة ذات الصلة، وأن المهام المرسلة خلالها تُستبعد عند التراجع. ويمكن اختيار afterCommit لمهمة محددة. راجع وثائق إصدار تطبيقك قبل التنفيذ، لأن المثال هنا يشرح قرار التوقيت وليس تعديلًا جاهزًا لكل مشروع.
هذا التأخير لا يثبت أن العامل سينفذ المهمة فورًا أو مرة واحدة فقط. افصل في تصميمك بين حفظ الطلب، وإرسال المهمة، وتشغيلها، والأثر الخارجي الذي تنفذه. لكل مرحلة سجل محدود ومعرّف ارتباط يساعد الفريق على معرفة أين توقفت الرحلة.
نفذ مصفوفة اعتماد وتراجع
| سيناريو الاختبار | الدليل المطلوب |
|---|---|
| معاملة بطيئة ثم اعتماد | العامل لا يعالج بيانات غير معتمدة |
| خطأ يؤدي إلى تراجع المعاملة | عدم إرسال المهمة المؤجلة الخاصة بها |
| اعتماد البيانات مع عامل متوقف | ظهور المهمة المنتظرة ومؤشر تأخر مفهوم |
| إعادة محاولة بعد فشل التنفيذ | عدم تكرار أثر تجاري غير مقصود |
استخدم طابور اختبار وعاملًا منفصلًا بدل إرسال رسائل فعلية للعملاء. ضع توقفًا متحكمًا فيه داخل المعاملة لاكتشاف السباق، ثم نفذ التراجع عمدًا في تجربة ثانية. احتفظ بوقت الاعتماد ووقت استلام العامل، ولا تعتبر نجاح اختبار يستبدل الطابور بالكامل دليلًا على سلوك عامل الإنتاج.
صمم الأثر الخارجي بعناية
في مثال افتراضي، تنشئ المؤسسة طلب خدمة ثم ترسل إشعارًا داخليًا. مرّر معرّف الطلب للمهمة واقرأ الحالة المطلوبة عند التنفيذ. حدد ماذا يحدث إذا ألغي الطلب بعد اعتماده وقبل تشغيل العامل؛ قد يحتاج النظام إلغاء الإشعار أو تغيير نصه وفق سياسة العمل، وليس إعادة إنشاء الحالة القديمة.
إذا كان الأثر الخارجي حساسًا، راجع آلية منع التكرار وإثبات الاستلام بصورة مستقلة. وفي الحالات التي تتطلب ربطًا أقوى بين الحفظ وتسليم الحدث، ناقش نمط صندوق الأحداث مع الفريق. اختيار النمط يتبع متطلبات الاعتمادية؛ afterCommit يعالج توقيت الإرسال ولا يحول قاعدة البيانات والخدمة الخارجية إلى معاملة واحدة.
اجعل التسليم قابلًا للمراقبة
وثق إعداد الاتصال والطابور وإصدار التطبيق وسياسة إعادة المحاولة، ثم تحقق من أن العامل يشغل الكود المتوقع بعد النشر. راقب عمر أقدم مهمة وأسباب الفشل دون تسجيل رموز الدخول أو محتوى العملاء. اجعل إجراء استعادة العمل واضحًا عندما يتراكم الطابور بدل إعادة تشغيله عشوائيًا.
ضمن تطوير أنظمة المؤسسات أضف هذه المصفوفة لاختبارات التسليم. وتساعد المراجعة التقنية على فحص حدود المعاملة والأثر الخارجي. الدليل المفيد يبين نجاح الاعتماد وفشل المعاملة وتعطل العامل، لأن سلامة التوقيت تظهر في مسارات الفشل بقدر ما تظهر في المسار الناجح.




