Hystrix รองรับผลการร้องขอหนึ่งครั้งและคำขอถัดไปที่มีคีย์เดียวกันจะดึงผลลัพธ์จากแคชโดยตรงลดการร้องขอค่าใช้จ่าย ในการใช้ฟังก์ชั่นนี้คุณต้องจัดการ HystrixRequestContext หากคำขอ B ต้องการใช้แคชผลลัพธ์ของคำขอ A, A และ B ต้องอยู่ในบริบทเดียวกัน บริบทสามารถสร้างผ่าน HystrixRequestContext.initializeContext () และบริบท shutdown () คำขอทั้งหมดระหว่างข้อความทั้งสองนี้อยู่ในบริบทเดียวกัน แน่นอนกระบวนการจัดการนี้สามารถนำไปใช้ผ่านตัวกรองที่กำหนดเอง อ้างถึงบทความก่อนหน้า //www.vevb.com/article/140527.htm
Hystrix Request Cache Annotation
@Cacheresult วิธีการที่เพิ่มลงในคำอธิบายประกอบนี้จะเปิดใช้งานการแคชคำขอ โดยค่าเริ่มต้นพารามิเตอร์ทั้งหมดของวิธีการใช้เป็นคีย์แคชซึ่งหมายความว่าแคชจะถูกแคชเฉพาะเมื่อพารามิเตอร์ทั้งหมดของวิธีการสอดคล้องกัน
@ServicePublic คลาส USERCACHESERVICE {@AutoWired UserFeignClient UserFeignClient; / *** @requestcache ของ HystrixCommand การเปิดใช้งานสามารถควบคุมได้ว่าการแคชนั้นได้รับการสนับสนุน* เฉพาะเมื่อมีการเพิ่ม @cacheresult สามารถแคชได้แม้ว่า requestcache.enabled = true* @param id ผู้ใช้ id* @ @ @ @ @@hystriperties "true")}) ผู้ใช้สาธารณะ findUserById (ID จำนวนเต็ม) {ส่งคืน userfeignlient.finduserById (ID); -หาก requestCache.enabled ถูกตั้งค่าเป็นเท็จแคชจะไม่ทำงานแม้ว่า @Cacheresult จะถูกเพิ่ม
@cachekey คำอธิบายประกอบนี้ช่วยให้คุณสามารถระบุคีย์แคช
@Cacheresult @HyStrixCommand (CommandProperties = {@HyStrixProperty (name = "requestCache.enabled", value = "true")}) ผู้ใช้ Public FindUserByIdandName (@Cachekey ID ID, ชื่อสตริง) -ในรหัสข้างต้นเราแก้ไขฟิลด์ ID ด้วย @cachekey ซึ่งระบุว่าตราบใดที่ ID เหมือนกันแคชจะถูกแคชโดยค่าเริ่มต้นและไม่มีอะไรเกี่ยวข้องกับฟิลด์ชื่อ หากเราระบุคุณสมบัติ cachekymethod ของ @cacheresult @cachekey คำอธิบายประกอบจะไม่ถูกต้อง
@cacheremove ฟังก์ชั่นของคำอธิบายประกอบนี้คือการทำให้แคชเป็นโมฆะ
/ ** * ระบุแคชของวิธีนี้เมื่อ FindUserById ถูกเรียกผ่าน @CacherEmove คำอธิบายประกอบ * @param id ผู้ใช้ ID * @param ชื่อผู้ใช้ชื่อผู้ใช้ * @return ผู้ใช้ที่ระบุ */ @cacheresult @cacheremove (commandkey = "FindUserById") @hystrixCommand (CommandProperties @HyStrixProperty (name = "requestCache.Enabled", value = "true")}) ผู้ใช้สาธารณะ findUserByIdName2 (@Cachekey ID ID ID, ชื่อสตริง) {return userfeignlient.finduserById (ID); -รหัสข้างต้นระบุว่าค่าของ Commandkey คุณสมบัติ @cacheremove คือ FounduserById ซึ่งหมายความว่าเมื่อเรียกว่า FinduserById จะถูกเรียกแคชของวิธีนี้
โปรดดูเวอร์ชันเต็มของรหัส: https://github.com/jingangwang/micro-service
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น