تكرار السؤال: …
الإجابة المختصرة
باستخدام Microsoft.Extensions.Resilience لدمج استراتيجيات Retry و Circuit Breaker و Timeout و Rate Limiter في خط دفاع موحد ومرن لاستدعاءات الشبكة.
الشرح
أعادت Polly v8 بناء هندستها بالكامل لتصبح فائقة السرعة وخالية من التخصيصات الزائدة، ودُمجت رسمياً مع عملاء HTTP في .NET عبر AddResilienceHandler(). يمكنك تكوين خط دفاع يحتوي على: إعادة المحاولة مع Exponential Backoff و Jitter للشبكات المتذبذبة، وقاطع دائرة لحماية الخادم عند تعطل الخدمة التابعة، ومهلة قصوى لكل محاولة.
مثال بالكود
builder.Services.AddHttpClient("ExternalService")
.AddStandardResilienceHandler(options => {
options.Retry.MaxRetryAttempts = 3;
options.CircuitBreaker.SamplingDuration = TimeSpan.FromSeconds(30);
});أخطاء شائعة
- إعادة المحاولة الفورية بدون Jitter (تأخير عشوائي) مما يسبب هجوماً متزامناً يسقط الخادم البعيد (Thundering Herd Problem).