مقدمة
في بعض الأحيان ، يحتاج العميل إلى إعادة المحاولة عندما يكون خادم التكوين غير مستجيب لإعطاء وقت لتكوين خادم الاسترداد. باستخدام مكون إعادة المحاولة المقدم من الربيع ، يمكننا بسهولة تكوين آلية إعادة المحاولة ، بما في ذلك فاصل إعادة المحاولة ، وعدد أوقات إعادة المحاولة ، وما إلى ذلك. لن أقول الكثير أدناه ، دعنا نلقي نظرة على المقدمة التفصيلية معًا.
رمز مصدر المشروع
انقر لتنزيل
أضف تبعيات لمشاريع الويب
لتمكين وظيفة إعادة محاولة العميل ، اثنين من التبعيات الجديدة ، استرجاع الربيع و spring-boot-starter-AOP ، إضافة الكود التالي إلى ملف pom.xml لمشروع الويب:
<Rependency> <roupEd> org.springframework.retry </rougiD> <intifactid> استرجاع الربيع </insifactid> <sored>
ثم أضف التكوين التالي في ملف bootstrap.yml:
الربيع: التطبيق: الاسم: Web-Client Cloud: Config: URI: http: // localhost: 8888 fail-fast: true rotry: interval interval: 1000 max-refmeds: 6 max-interval: 2000 mustiber: 1.1
أولاً ، دع Spring.cloud.config.fail-fast صحيح ، أي إذا كان لا يمكن الحصول على التكوين عن بُعد ، فسوف يفشل على الفور ، ولكن حاول مرة أخرى مع التكوين التالي.
spring.cloud.config.Retry جميع الأطفال هم قيم افتراضية:
امتحان
إذا استخدمنا المشروع في هذا البرنامج التعليمي ، فنحن بحاجة إلى بدء مشروع ConfigServer أولاً ، ثم ابدأ مشروع التسجيل وبدء eureka ، لأن عميل الويب يستخدم خدمة Eureka ، ثم أغلق ConfigServer ، ثم ابدأ مشروع الويب. سنرى السجل التالي:
2018-05-15 16: 04: 58.421 INFO 2663 --- [MAIN] CCCCONFIGServicePropertySourCOUROCATOR: جلب التكوين من الخادم على: http: // localhost: 8888
بعد 6 فشل في إعادة المحاولة ، فشل العميل في البدء. إذا تم تمكين ConfigsServer في منتصف الطريق ، فإن عميل الويب يبدأ بنجاح.
إعادة محاكاة السيطرة الدقيقة
يمكننا تنفيذ آلية إعادة تحكم أكثر تفصيلاً في الرمز ، وإنشاء فئة جديدة من جافا CN.ZXUQIAN.CONFIGURITIONS.RETRYCONFIGURATION في مشروع الويب ، وإضافة الرمز التالي:
حزمة cn.zxuqian.configurations ؛ استيراد org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ استيراد org.springframework.boot.autoconfigure.condition.conditionalonmissbean ؛ استيراد org.springframework.beant org.springframework.retry.Interceptor.RetryInterceptorBuilder ؛ import org.springframework.retry.Interceptor.RetryOprationsInterceptor ؛ public class retryConfiguration {private static logger = loggerfactory.getLogger (retryConfiguration.class) ؛ bean @conditionalonmissingbean (name = "configserverRetRyInterceptor") public receprationsInterceptor configerverretryInterceptor () {log.info (string.format ("configServerRetryInterceptor: تغيير الخلفيات" + "to inital: ٪ s ، maxinterval: 1000 ، 1000 ، RetryInterceptorBuilder .stateless () .backOffoptions (1000 ، 1.2 ، 5000) .Maxattempts (10) .Build () ؛ }} نحن هنا نحدد طريقة configServerRetRyInterceptor لإعادة محاكاة الربيع باستخدام اعتراض إعادة المحاولة المخصص لدينا. تستخدم الأساليب RetryInterceptorBuilder لإنشاء مقبلة إعادة تشغيل عديمة الأساس كما هو مطلوب ، وتعيين فاصل إعادة المحاولة الأولي على 1000 مللي ثانية ، والزيادة المتعددة هي 1.2 مرة ، الحد الأقصى لفاصل إعادة المحاولة هو 5000 مللي ثانية ، وأوقات إعادة المحاولة القصوى هي 10 مرات. يوفر المنشئ أيضًا واجهات مثل تكوين آلية إعادة المحاولة ، والتي يمكن للقراء المهتمين الدراسة بمفردهم.
يشير ConditionAlonMissingBean إلى أن هذه الفول تتم مطابقة عندما لا يكون هناك فول يدعى ConfigServerRetryInterceptor في Beanfactory.
أخيرًا ، في SRC/Main/Resources/META-INF/(لا يمكن إنشاء مجلد) قم بإنشاء ملف Spring.Factories جديدًا ، مع تحديد أننا أنشأنا الفصل فقط كتكوين عند بدء التشغيل ، بحيث يصبح مفعولًا قبل الحصول على التكوين عن بُعد:
org.springframework.cloud.bootstrap.bootstrapConfiguration = cn.zxuqian.configurations.RetryConfiguration
امتحان
أخيرًا ، ابدأ مشروع الويب تحت شرط إغلاق ConfigServer ، وبعد ذلك سترى أن المشروع يبدأ بعد عشرة إعادة محاولة.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.