كيف يعمل التكامل
نظرة عامة على البنية
يوفر نظام التكامل طريقتين لمزامنة بيانات متجرك مع أنظمة خارجية مثل Odoo:
- سحب (Pull): نظامك يطلب البيانات من واجهة REST API
- دفع (Push): دُرج يرسل إشعارات فورية عبر Webhooks
المكونات الرئيسية
| المكون | الوصف |
|---|---|
| REST API | api.durj.ly/api/v1/* — جلب المنتجات والطلبات والعملاء والمخزون |
| Event Log | كل تغيير في البيانات يُسجل في قاعدة البيانات |
| Event Poller | يفحص سجل الأحداث كل 3 ثوانٍ ويضيفها لقائمة الانتظار |
| BullMQ Queue | قائمة انتظار Redis لضمان تسليم موثوق |
| Webhook Dispatcher | يوقّع الحمولة بـ HMAC-SHA256 ويرسلها لنقطة النهاية |
مسار تسليم Webhook
عند حدوث حدث في متجرك (طلب جديد، تحديث منتج…)، هذا ما يحدث:
سياسة إعادة المحاولة
| المحاولة | التأخير |
|---|---|
| الأولى | 1 دقيقة |
| الثانية | 5 دقائق |
| الثالثة | 30 دقيقة |
| الرابعة | ساعتان |
| الخامسة | 12 ساعة |
بعد 5 محاولات فاشلة، يُنقل التسليم إلى قائمة الرسائل الميتة (DLQ) ويمكنك إعادة المحاولة يدوياً من لوحة التحكم.
قاطع الدائرة (Circuit Breaker)
إذا فشل نقطة نهاية 10 مرات متتالية، يتم تعليقها تلقائياً لمدة 30 دقيقة لحماية خادمك. تعود تلقائياً عند أول نجاح.
استراتيجية المزامنة: سحب أم دفع؟
النهج الأمثل: الجمع بينهما
- المزامنة الأولية — استخدم Pull لاستيراد البيانات التاريخية عبر نقاط التصدير المجمّع (
/export) - المزامنة المستمرة — استخدم Push (Webhooks) لتلقي التحديثات فوراً
- المصالحة الدورية — جدوِل مهمة Pull كل ساعة للتأكد من عدم فقدان أي بيانات
# مثال: مزامنة أولية للمنتجاتcurl -H "Authorization: Bearer tjr_..." \ "https://api.durj.ly/api/v1/products/export" \ -o products.ndjson
# ثم اعتمد على Webhooks للتحديثات الفورية