ก่อนอื่นการลองใหม่ที่นี่ไม่ใช่การลองใหม่หลังจากมีการรายงานข้อผิดพลาด แต่ลองอีกครั้งกับอินสแตนซ์อื่นหลังจากไคลเอนต์โหลดบาลานซ์พบว่าอินสแตนซ์คำขอระยะไกลไม่พร้อมใช้งาน
@bean@loadbalancedRestTemplate restTemplate () {httpComponentsClienthttpRequestFactory httprequestFactory = ใหม่ httpComponentsClienthttprequestFactory (); httprequestFactory.setReadtimeout (5,000); HTTPREQUESTFACTORY.SetConnectTimeOut (5,000); ส่งคืน RESTTEMPLATE ใหม่ (HTTPREQUESTFACTORY);}กลไกการลองใหม่
Feign กำลังลองใหม่การกำหนดค่าผ่าน Retryer ที่บรรจุด้วยตัวเองและค่าเริ่มต้นคือ 5 ครั้ง
Package Feign; นำเข้า java.util.concurrent.timeUnit.seconds;/*** โคลนสำหรับการร้องขอแต่ละครั้งเพื่อ {@link client#execute (คำขอ, feign.request.options)} * การใช้งานอาจทำให้สถานะตรวจสอบว่าการดำเนินการลองใหม่ควรดำเนินการต่อหรือไม่ * /Public Interface Retryer ขยาย cloneable { /*** หากได้รับอนุญาตให้ลองอีกครั้งให้กลับมาอีกครั้ง (อาจเป็นหลังจากนอนหลับ) มิฉะนั้นเผยแพร่ข้อยกเว้น */ void ExtrontorPropagate (retryableException e); retryer clone (); ระดับเริ่มต้นของคลาสสาธารณะเริ่มต้น retryer {ส่วนตัวสุดท้าย int maxattempts; ช่วงเวลาสุดท้ายของเอกชน Maxperiod Long Final Private; ความพยายาม int; Long Sleptformillis; ค่าเริ่มต้นสาธารณะ () {สิ่งนี้ (100, วินาที tomillis (1), 5); } ค่าเริ่มต้นสาธารณะ (ระยะเวลานาน, maxperiod ยาว, int maxattempts) {this.period = ระยะเวลา; this.maxperiod = maxperiod; this.maxattempts = maxattempts; this.attempt = 1; - Feign Cancel retry
@bean retryer feignretryer () {return retryer.never_retry; - การตั้งค่าการหมดเวลาขอ Feign
@beanrequest.options requestoptions (กำหนดค่า env env) {int ribbonreadtimeout = env.getProperty ("ribbon.readtimeout", int.class, 6000); int ribbonconnectiontimeout = env.getProperty ("ribbon.connecttimeout", int.class, 3000); ส่งคืนคำขอใหม่ OPTIONS (RibbonConnectionTimeOut, RibbonReadTimeOut);}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น