إعادة المحاولة
ينطبق على: جميع مستويات إدارة واجهة برمجة التطبيقات
ينفذ النهج retry
نُهجه الفرعية مرة واحدة ثم يعيد محاولة تنفيذها حتىcondition
تصبح false
أو تُستنفدcount
إعادة المحاولة.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
نهج السياسة
<retry
condition="Boolean expression or literal"
count="number of retry attempts"
interval="retry interval in seconds"
max-interval="maximum retry interval in seconds"
delta="retry interval delta in seconds"
first-fast-retry="boolean expression or literal">
<!-- One or more child policies. No restrictions. -->
</retry>
سمات
السمة | الوصف | مطلوبة | افتراضي |
---|---|---|---|
condition | منطقي. يحدد ما إذا كان يجب إيقاف عمليات إعادة المحاولة (false ) أو المتابعة (true ). يتم السماح بتعبيرات النهج. |
نعم | غير متوفر |
عدد | رقم موجب بين 1 و50 يحدد عدد مرات إعادة المحاولة. يتم السماح بتعبيرات النهج. | نعم | غير متوفر |
الفاصل الزمني | رقم موجب بالثواني يحدد فترة الانتظار بين مرات إعادة المحاولة. يتم السماح بتعبيرات النهج. | نعم | غير متوفر |
الفاصل الزمني الأقصى | رقم موجب بالثواني يحدد أقصى فترة انتظار بين مرات إعادة المحاولة. يتم استخدامه لتنفيذ خوارزمية إعادة محاولة أسية. يتم السماح بتعبيرات النهج. | لا | غير متاح |
delta | رقم موجب بالثواني يحدد زيادة الفاصل الزمني للانتظار. يتم استخدامه لتنفيذ خوارزميات إعادة المحاولة الخطية والأسية. يتم السماح بتعبيرات النهج. | لا | غير متاح |
إعادة المحاولة السريعة الأولى | منطقي. إذا تم التعيين على true ، يتم تنفيذ محاولة إعادة المحاولة الأولى على الفور. يتم السماح بتعبيرات النهج. |
لا | false |
إعادة محاولة أوقات الانتظار
عندما يتم تحديد
interval
فقط، يتم تنفيذ إعادة المحاولة بفاصل زمني ثابت.عند تحديد
interval
وdelta
فقط، يتم استخدام خوارزمية إعادة محاولة الفاصل الزمني الخطي. يزيد وقت الانتظار بين عمليات إعادة المحاولة وفقاً للصيغة التالية:interval + (count - 1)*delta
.عند تحديد
interval
وmax-interval
وdelta
، يتم تطبيق خوارزمية إعادة محاولة فاصل زمني أسي. يزيد وقت الانتظار بين عمليات إعادة المحاولة بشكل كبير وفقاً للصيغة التالية:interval + (2^(count - 1)) * random(delta * 0.8, delta * 1.2)
، حتى الحد الأقصى للفاصل الزمني الذي تم تعيينه بواسطةmax-interval
.على سبيل المثال، عندما
interval
يتم تعيين كل من وdelta
إلى 10 ثوان، وmax-interval
100 ثانية، يزداد وقت الانتظار التقريبي بين عمليات إعادة المحاولة كما يلي: 10 ثوان، 20 ثانية، 40 ثانية، 80 ثانية، مع استخدام وقت الانتظار 100 ثانية لإعادة المحاولة المتبقية.
عناصر
قد يحتوي النهج retry
على أي نهج أخرى كعناصر تابعة لها.
الاستخدام
- أقسام النهج: واردة وصادرة وخلفية وعند الخطأ
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات، والتشغيل
- البوابات: الكلاسيكية، الإصدار 2، الاستهلاك، المستضافة ذاتيا، مساحة العمل
الأمثلة
طلب إعادة التوجيه مع إعادة المحاولة الأسية
في المثال التالي، تتم إعادة محاولة إعادة توجيه الطلب حتى عشر مرات باستخدام خوارزمية إعادة المحاولة الأسية. نظرا first-fast-retry
لأنه تم تعيين إلى false
، تخضع جميع محاولات إعادة المحاولة لأوقات انتظار إعادة المحاولة متزايدة بشكل كبير (في هذا المثال، حوالي 10 ثوان، 20 ثانية، 40 ثانية، ...)، حتى الحد الأقصى لانتظار .max-interval
<retry
condition="@(context.Response.StatusCode == 500)"
count="10"
interval="10"
max-interval="100"
delta="10"
first-fast-retry="false">
<forward-request buffer-request-body="true" />
</retry>
إرسال الطلب عند فشل الطلب الأولي
في المثال التالي، تتم إعادة محاولة إرسال طلب إلى عنوان URL بخلاف الواجهة الخلفية المحددة حتى ثلاث مرات في حالة انقطاع / انتهاء مهلة الاتصال، أو يؤدي الطلب إلى حدوث خطأ من جانب الخادم. بما first-fast-retry
أنه تم تعيين إلى صواب، يتم تنفيذ إعادة المحاولة الأولى مباشرة عند فشل الطلب الأولي. لاحظ أنه send-request
يجب تعيين ignore-error
إلى tصواب لكي response-variable-name
تكون خالية في حالة حدوث خطأ.
<retry
condition="@(context.Variables["response"] == null || ((IResponse)context.Variables["response"]).StatusCode >= 500)"
count="3"
interval="1"
first-fast-retry="true">
<send-request
mode="new"
response-variable-name="response"
timeout="3"
ignore-error="true">
<set-url>https://api.contoso.com/products/5</set-url>
<set-method>GET</set-method>
</send-request>
</retry>
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع:
- البرنامج التعليمي: تحويل واجهة برمجة التطبيقات الخاصة بك وحمايتها
- Policy reference لقائمة كاملة من بيانات النُهج وإعداداتها
- تعبيرات النهج
- تعيين النهج أو تحريرها
- إعادة استخدام التكوينات الخاصة بالنهج
- مستودع القصاصات البرمجية للنهج
- مجموعة أدوات نهج إدارة واجهة برمجة تطبيقات Azure
- نهج المؤلف باستخدام Microsoft Copilot في Azure