ماكرو Prologue و Epilogue في Hyperlane
تُعد الـ Middleware العمود الفقري لمعالجة الطلبات في Hyperlane. يستخدم معظم الأشخاص الـ middleware القياسي للطلبات والاستجابات. ومع ذلك، توفر Hyperlane ماكرو prologue و epilogue متخصصين لتوفير تحكم إضافي.
تعمل هذه الماكرو في بداية ونهاية دورة حياة الطلب تمامًا. وهي تتيح لك التحكم بدقة في وقت وصول البيانات إلى العميل.
دورة حياة الطلب:
• وصول الطلب: يستقبل الخادم طلب HTTP. • مرحلة الـ Prologue: ترسل البيانات الأولية مثل الـ headers أو رموز الحالة (status codes). • سلسلة الـ Middleware: تقوم الدوال بمعالجة الطلب. • معالج المسار (Route handler): يقوم النظام ببناء الاستجابة. • middleware الاستجابة: تقوم الدوال بمعالجة الاستجابة. • مرحلة الـ Epilogue: يتم تفريغ البيانات النهائية (flush) إلى العميل وتُغلق الاتصالات.
استخدم هذه الماكرو لإدارة الخطوتين 2 و 6.
ماكرو الإرسال (Send Macros):
استخدم #[try_send] للبيانات غير الحساسة. إذا انقطع الاتصال، فإنه يتعامل مع الخطأ دون توقف النظام (crashing). هذا مفيد لعمليات البث (streaming) حيث لا يشكل فقدان جزء واحد مشكلة.
استخدم #[send] للبيانات الحساسة. يضمن ذلك مرور البيانات بنجاح.
ماكرو التفريغ (Flush Macros):
استخدم #[try_flush] لمحاولة مسح الذاكرة المؤقتة (buffer) والتعامل مع الأخطاء بسلاسة.
استخدم #[flush] لإجبار جميع البيانات المخزنة مؤقتًا على الانتقال إلى العميل. استخدم هذا لمنع فقدان البيانات قبل إغلاق الاتصال.
أفضل الممارسات:
- استخدم
#[try_send]لبيانات البث (streaming) لتجنب توقف النظام عند انقطاع الاتصالات. - استخدم
#[send]عندما يكون تسليم البيانات إلزاميًا. - قم دائمًا بتفريغ الذاكرة المؤقتة (flush your buffer) قبل إغلاق الاتصال.
- تحقق من
stream.is_keep_alive()في الـ epilogue الخاص بك لإدارة إعادة استخدام الاتصال. - استخدم هذه الماكرو لـ Server-Sent Events (SSE) لدفع التحديثات في الوقت الفعلي.
- تعامل مع جميع أخطاء الإرسال (send) والتفريغ (flush) لمنع فشل النظام.
تمنحك هذه الأدوات تحكمًا دقيقًا في تدفق البيانات وتوقيت الاستجابة.
المصدر: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 كود المشروع: https://github.com/hyperlane-dev/hyperlane