บทความนี้แนะนำวิธีการของการลองใหม่ในฤดูใบไม้ผลิเพื่อสนับสนุนฤดูใบไม้ผลิลองอีกครั้ง มันถูกแบ่งปันกับคุณ รายละเอียดมีดังนี้:
ขั้นตอนแรกคือการแนะนำการพึ่งพา Maven
<carent> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <version> 1.5.3.release </เวอร์ชัน> <ArtIfactId> Spring-Boot-Starter-web </artifactid> </การพึ่งพาอาศัย> <!-https://mvnrepository.com/artifact/org.springframework.retry/spring-retry-> <cersion> 1.1.2.release </version> </perdency> <การพึ่งพา> <roupId> org.aspectj </groupId> <atifactId> AppistjWeaver </artifactid>
ขั้นตอนที่ 2: เพิ่ม @Retryable และ @Recover Annotations
แพ็คเกจสวัสดี; นำเข้า org.springframework.remoting.remoteaccessexception; นำเข้า org.springframework.retry.annotation.backoff; นำเข้า org.springframework.Retry.Annotation.Recover; นำเข้า org.springframework.Retry.Annotation.retryable; นำเข้า org.springframework.stereotype.service; @ServicePublic คลาส remoteservice {@Retryable (value = {remoteAccessException.class}, maxattempts = 3, backoff = @back {system.out.println ("ทำอะไร ... "); โยน remoteaccessexception ใหม่ ("ข้อยกเว้นการโทร RPC");}@dearchpublic void กู้คืน (remoteaccessexception e) {system.out.println (e.getMessage ());}} @Retryable Annotation <br /> หากวิธีการอธิบายประกอบมีข้อยกเว้นจะต้องลองอีกครั้ง
ค่า: ระบุว่าข้อยกเว้นที่เกิดขึ้นและลองอีกครั้ง
รวม: เช่นค่าเริ่มต้นที่ว่างเปล่า เมื่อยกเว้นก็ว่างเปล่าข้อยกเว้นทั้งหมดจะถูกลองอีกครั้ง
ไม่รวม: ระบุว่าข้อยกเว้นไม่ได้ลองใหม่ค่าเริ่มต้นจะว่างเปล่า เมื่อรวมถึงว่างเปล่าข้อยกเว้นทั้งหมดจะถูกลองใหม่
Maxattemps: จำนวนเวลาลองใหม่, ค่าเริ่มต้น 3
Backoff: ลองใช้กลไกการชดเชยอีกครั้งไม่มีการผิดนัด
@backoff Annotation
ล่าช้า: ระบุความล่าช้าและลองอีกครั้ง
ตัวคูณ: ระบุทวีคูณของความล่าช้าเช่นความล่าช้า = 5000L, ตัวคูณ = 2 หลังจากการลองครั้งแรกคือ 5 วินาทีครั้งที่สองคือ 10 วินาทีและครั้งที่สามคือ 20 วินาที
@ฟื้นตัว
เมื่อการลองใหม่ถึงจำนวนครั้งที่ระบุวิธีการอธิบายประกอบจะถูกเรียกกลับและการประมวลผลบันทึกสามารถทำได้ในวิธีนี้ ควรสังเกตว่าการโทรกลับจะเกิดขึ้นเฉพาะในกรณีที่ข้อยกเว้นเกิดขึ้นและประเภทพารามิเตอร์เหมือนกัน
ขั้นตอนที่ 3: เริ่มคอนเทนเนอร์และทดสอบใน Springboot
เพิ่ม @enableretry คำอธิบายประกอบเพื่อเปิดใช้งานฟังก์ชันใหม่
แพ็คเกจสวัสดี; นำเข้า org.springframework.boot.autoconfigure.springbootapplication; นำเข้า org.springframework.context.applicationContex org.springFramework.Retry.Annotation.enableretry;@springbootapplication@enableRetryPublic คลาสแอปพลิเคชัน {โมฆะสาธารณะคงที่หลัก (String [] args) โยนข้อยกเว้น {ApplicationContext AnnotationContext = ใหม่ AnnotationConfigApplicationContext ("Hello"); remoteservice remoteservice = AnnotationContext.getBean ("Remoteservice", Remoteservice.class); remoteservice.call (); - ผลการทำงาน:
16: 50: 51.012 [Main] Debug org.springFramework.Retry.Support.RetryTemplate - ลองใหม่: นับ = 0
ทำอะไร ...
16: 50: 51.025 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpoly
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 - ลองใหม่: นับ = 1
ทำอะไร ...
16: 50: 56.026 [Main] Debug org.springframework.retry.backoff.exponentialbackoffpoly
16: 51: 01.026 [Main] Debug org.springframework.Retry.support.RetryTemplate - การตรวจสอบใหม่: นับ = 2
16: 51: 01.027 [Main] Debug org.springFramework.Retry.support.RetryTemplate - ลองใหม่: นับ = 2
ทำอะไร ...
16: 51: 01.027 [Main] Debug org.springframework.Retry.support.RetryTemplate - การตรวจสอบการ Rethrow: count = 3
16: 51: 01.027 [Main] Debug org.springFramework.Retry.Support.RetryTemplate - ลองใหม่ล้มเหลวครั้งสุดท้าย: นับ = 3
ข้อยกเว้นการโทร RPC
การอ้างอิง: https://github.com/spring-projects/spring-retry
เติมเต็ม
สำหรับคำขอที่ไม่ได้ใช้งาน (เช่นการดำเนินการใหม่หรือการปรับปรุง) อย่าใช้การลองใหม่เนื่องจากจะมีผลกระทบอย่างมากต่อความสอดคล้องของข้อมูล
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น