تقدم هذه المقالة طريقة إعادة إعادة محاكاة الربيع لدعم إعادة إعادة محاكاة الربيع. تتم مشاركتها معك. التفاصيل كما يلي:
الخطوة الأولى هي تقديم تبعيات Maven
<Arnal> <roupiD> org.springframework.boot </rougiD> <intifactid> Spring-boot-starter-parent </shintifactid> <الإصدار> 1.5.3. <StifactId> Spring-boot-starter-web </shintifactid> </sependency> <!-https://mvnrepository.com/artifact/org.springframework.retry/spring-retry-> <sperency> <roupiD> org.springframework.retry <sophy> 1.1.2.release </version> </sependency> <reperence> <roupiD> org.aspectj </rougeid> <intifactid> sidejweaver </shintifactid> <soph> 1.8.6 </version> </dependency>
الخطوة 2: إضافة التعليقات التوضيحية القابلة للإعادة
package hello ؛ import org.springframework.remoting.remoteaccessexception ؛ import org.springframework.retry.annotation.backoff ؛ import org.springframework.retry.annotation.recover org.springframework.retry.annotation. System.out.println ("افعل شيئًا ...") ؛ رمي RemoteAccessException جديد ("استثناء استدعاء RPC") ؛}@Recoverpublic Void Recover (RemoteAccessException e) {system.out.println (e.getMessage ()) ؛}} التعليق التوضيحي القابل للإعادة
القيمة: حدد أن الاستثناء حدث وحاول مرة أخرى
تشمل: مثل القيمة ، الافتراضي فارغ. عندما يكون الاستبعاد فارغًا أيضًا ، سيتم محاكمة جميع الاستثناءات مرة أخرى
استبعاد: حدد أن الاستثناء لا يعيد إعادة المحاولة ، فإن الافتراضي فارغ. عندما يكون التضمين فارغًا أيضًا ، سيتم إعادة إعادة محيط جميع الاستثناءات.
Maxattemps: عدد أوقات إعادة المحاولة ، الافتراضي 3
Backoff: أعد رعاية آلية التعويض ، لا يوجد افتراضي
التعليق التوضيحي backoff
التأخير: حدد التأخير وحاول مرة أخرى
المضاعف: حدد مضاعفات التأخير ، مثل التأخير = 5000L ، المضاعف = 2 ، بعد إعادة المحاولة الأولى 5 ثوان ، والمرة الثانية هي 10 ثوان ، والمرة الثالثة هي 20 ثانية.
Recover
عندما تصل إعادة المحاولة إلى عدد المرات المحددة ، سيتم استدعاء الطريقة المشروحة مرة أخرى ، ويمكن تنفيذ معالجة السجل في هذه الطريقة. تجدر الإشارة إلى أن رد الاتصال لن يحدث إلا في حالة حدوث الاستثناء ونوع المعلمة هو نفسه.
الخطوة 3: ابدأ الحاوية واختبارها في Springboot
أضف enablertry enootation لتمكين وظيفة إعادة المحاولة
package hello ؛ import org.springframework.boot.autoconfigure.SpringBootApplication ؛ import org.springframework.context.applicationContext ؛ import org.springframework.context.annotation.annotationConfigplication ؛ org.springframework.retry.annotation.enablerry ؛@springBootApplication@enibretrypublic application {public static void main (string [] args) rems {ApplicationContext innotationContext = New enrotationConfigPlicationContext ("hell") ؛ Remoteservice remoteservice = enrotationContext.getBean ("Remoteservice" ، remoteservice.class) ؛ Remoteservice.call () ؛ }} نتائج التشغيل:
16: 50: 51.012 [Main] Debug org.springframework.retry.support.retrytemplate - Retry: Count = 0
افعل شيئًا ...
16: 50: 51.025 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpolicy - Sleeping for 5000
16: 50: 56.026 [Main] Debug org.springframework.retry.support.retrytemplate - التحقق من Rethrow: Count = 1
16: 50: 56.026 [main] debug org.springframework.retry.support.retrytemplate - Retry: Count = 1
افعل شيئًا ...
16: 50: 56.026 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpolicy - النوم لمدة 5000
16: 51: 01.026 [Main] Debug org.springframework.retry.support.retrytemplate - التحقق من إعادة التجزئة: count = 2
16: 51: 01.027 [Main] debug org.springframework.retry.support.retrytemplate - Retry: Count = 2
افعل شيئًا ...
16: 51: 01.027 [Main] Debug org.springframework.retry.support.retrytemplate - التحقق من إعادة الصياغة: count = 3
16: 51: 01.027 [Main] debug org.springframework.retry.support.retrytemplate - فشل إعادة المحاولة الأخيرة: العد = 3
استثناء مكالمة RPC
المرجع: https://github.com/spring-projects/spring-retry
تجديد
بالنسبة للطلبات غير الإضافية (مثل العمليات الجديدة أو المحدثة) ، لا تستخدم إعادة المحاولة ، حيث سيكون لها تأثير كبير على تناسق البيانات.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.