التسليم وإعادة المحاولة
تنتهي مهلة تسليم الويب هوك بعد 500 ملّي ثانية ويُعاد حتى 3 مرات. امنع التكرار بمعرّف التسليم. يُعطَّل الويب هوك بعد 50 فشلًا متتاليًا.
تجري أوكتين حتى 3 محاولات لكل تسليم، لكل منها مهلة 500 ملّي ثانية، وتعطّل الويب هوك بعد 50 فشلًا متتاليًا أو 3 أيام من الفشل. معرّف التسليم هو نفسه في كل محاولة، فامنع التكرار به.
التسليم الواحد
لكل معاملة ولكل مفتاح من مفاتيحك له عنوان ويب هوك، تجري أوكتين تسليمًا واحدًا:
| القاعدة | القيمة |
|---|---|
| الطريقة | POST، Content-Type: application/json |
| المهلة | 500 ملّي ثانية من الاتصال حتى اكتمال الاستجابة |
| النجاح | أي حالة 2xx. يُتجاهل الجسم. |
| الفشل | أي حالة غير 2xx، أو انتهاء المهلة، أو خطأ TLS أو اتصال، أو فشل DNS |
| إعادة التوجيه | لا تُتبع؛ 3xx يُحسب فشلًا |
المهلة قصيرة عمدًا. يجب ألا ينفذ المعالج لديك أي عمل قبل الرد: لا كتابة في قاعدة بيانات، ولا استدعاءات لواجهات أخرى، ولا تنزيل صور. الأمران الوحيدان اللذان يُنفَّذان قبل الرد هما التحقق من التوقيع وتمرير الحدث الخام إلى طابور أو مهمة خلفية، ثم إعادة 2xx.
صمّم لـ 500 ملّي ثانية
البدء البارد ومصافحة TLS وبطء DNS تُحسب كلها من الميزانية. أبقِ نقطة النهاية دافئة، وأنهِ TLS قريبًا من تطبيقك، وتجنب المنصات بلا خادم ذات البدء البارد الذي يستغرق ثوانٍ لهذا المسار. إذا رأيت أخطاء TIMEOUT من جانب أوكتين، فهذا أول مكان تنظر فيه.
كم مرة تعيد أوكتين المحاولة؟
يُعاد التسليم الفاشل حتى 3 محاولات إجمالًا، متباعدة تقريبًا كالتالي:
| المحاولة | التأخير التقريبي بعد المحاولة السابقة |
|---|---|
| 1 | فورًا |
| 2 | 30 ثانية |
| 3 | 2.5 دقيقة |
ترسل كل محاولة الجسم نفسه ومعرّف التسليم id نفسه؛ ولا يتغير سوى الطابع الزمني للتوقيع وروابط الصور (المعاد توقيعها، صالحة 24 ساعة).
بعد فشل المحاولة الثالثة يُسجَّل التسليم فاشلًا من جانب أوكتين مع الاستجابة التي أعادتها نقطة النهاية لديك. يمكن لأوكتين إعادة تسليم حدث فاشل عند الطلب. تحمل إعادة التسليم id الأصلي.
متى يُعطَّل الويب هوك؟
إذا استمر فشل التسليمات، يُعطَّل الويب هوك تلقائيًا بعد 50 تسليمًا فاشلًا متتاليًا أو 3 أيام من الفشل المستمر، أيهما أسبق. تُخطَر أنت وفريق عمليات أوكتين بالبريد الإلكتروني.
- أي تسليم ناجح يعيد ضبط عدّاد الفشل.
- أثناء التعطيل لا تُرسل أحداث ولا تُصفّ. استخدم واجهة السحب لملء الفجوة بعد إصلاح نقطة النهاية.
- اطلب من أوكتين إعادة تفعيل الويب هوك بعد إصلاح نقطة النهاية.
عدم التكرار
تعني إعادة المحاولة وإعادة التسليم أن نقطة النهاية لديك قد تستقبل الحدث نفسه أكثر من مرة. معرّف التسليم id (الموجود أيضًا في X-Octane-Delivery) حتمي لمعاملة ومفتاح معينين، لذا فهو مفتاح آمن لمنع التكرار:
async function handle(event) {
const inserted = await db.execute(
'INSERT INTO octane_events (delivery_id, received_at) VALUES ($1, now()) ON CONFLICT DO NOTHING',
[event.id],
);
if (inserted.rowCount === 0) return; // already processed
await processTransaction(event.data.transaction);
}بدلًا من ذلك، نفّذ upsert على data.transaction.id: لا تُرسل المعاملة إلا مرة واحدة لكل مفتاح، فأي تسليم ثانٍ بمعرّف المعاملة نفسه هو دائمًا إعادة محاولة.
هل تُسلَّم الأحداث بالترتيب؟
تُسلَّم الأحداث وفق تأكيد المعاملات، لكن الترتيب بين الأحداث غير مضمون، خاصة مع إعادة المحاولات. استخدم data.transaction.created_at أو confirmed_at إذا كان الترتيب يهمك.
المراقبة من جانبك
- نبّه عند معدل مستمر لفشل التوقيع: يعني غالبًا سرًا خاطئًا أو معالج جسم خام مضبوطًا بشكل خاطئ.
- نبّه إذا لم تستقبل أحداثًا لفترة أطول من نمط حركتك المعتاد؛ فقد يكون الويب هوك عُطّل.
- سجّل معرّف التسليم
idمع كل حدث تعالجه ليمكن الإشارة إليه في محادثات الدعم. - سوِّ يوميًا مع واجهة السحب لالتقاط أي شيء فات أثناء تعطل نقطة النهاية.
أسئلة شائعة
- ما السرعة المطلوبة لرد نقطة نهاية الويب هوك لدي؟
- خلال 500 ملّي ثانية، محسوبة من الاتصال حتى اكتمال الاستجابة. تحقق من التوقيع، وضع الحدث في طابور، وأعد 2xx. نفّذ كل عمل آخر بعد الرد.
- كم مرة تعيد أوكتين محاولة ويب هوك فاشل؟
- ثلاث محاولات إجمالًا: فورًا، وبعد نحو 30 ثانية، وبعد نحو 2.5 دقيقة. بعد الفشل الثالث يُسجَّل التسليم ويمكن لأوكتين إعادة تسليمه عند الطلب.
- هل يمكن أن أستقبل الويب هوك نفسه مرتين؟
- نعم، بعد إعادة محاولة أو إعادة تسليم. معرّف التسليم في الجسم وفي X-Octane-Delivery هو نفسه في كل مرة لمعاملة ومفتاح معينين، فخزّنه وتجاهل التكرارات.
- ماذا يحدث إذا تعطلت نقطة النهاية لدي لفترة طويلة؟
- بعد 50 تسليمًا فاشلًا متتاليًا أو 3 أيام من الفشل المستمر يُعطَّل الويب هوك وتُراسَل بالبريد. أصلح نقطة النهاية، واطلب من أوكتين إعادة تفعيله، واملأ الفجوة بواجهة السحب.
التحقق من التوقيع
تحقق من X-Octane-Signature بحساب HMAC-SHA256 على الطابع الزمني ونقطة والجسم الخام بسر الويب هوك الخاص بك. أمثلة بلغات Node.js وPython وPHP وC# وJava.
أفضل الممارسات
اجمع بين الويب هوك ومزامنات واجهة السحب المجدولة، ونفّذ upsert بمعرّف المعاملة، وأعد الاستعلام عن النطاقات الحديثة لاكتشاف المعاملات الملغاة.


