Hystrix mendukung hasil yang di -cache satu permintaan, dan permintaan berikutnya dengan kunci yang sama akan langsung mengambil hasil dari cache, mengurangi overhead permintaan. Untuk menggunakan fungsi ini, Anda harus mengelola hystrixRequestContext. Jika permintaan B ingin menggunakan cache hasil permintaan a, a dan b harus dalam konteks yang sama. Konteks dapat dibangun melalui hystrixRequestContext.initializeContext () dan context.shutdown (). Semua permintaan antara kedua pernyataan ini berada dalam konteks yang sama. Tentu saja, proses manajemen ini dapat diimplementasikan melalui filter khusus. Lihat artikel sebelumnya //www.vevb.com/article/140527.htm
Permintaan Hystrix Anotasi cache
@Cacheresult Metode yang ditambahkan ke anotasi ini akan memungkinkan caching permintaan. Secara default, semua parameter metode ini digunakan sebagai tombol cache, yang berarti bahwa cache hanya akan di -cache jika semua parameter metode ini konsisten.
@Servicepublic kelas usercacheservice {@autowired private userfeignclient userfeignclient; /** * @HystrixCommand's requestCache.enabled can control whether caching is supported* Only when @CacheResult is added can cache, even if requestCache.enabled=true * @param id User id * @return specified user*/ @CacheResult @HystrixCommand(commandProperties = { @HystrixProperty(name="requestCache.enabled",value = "true")}) pengguna publik findUserById (integer id) {return userfeignclient.finduserbyId (id); }}Jika RequestCache.enabled diatur ke False, cache tidak akan berfungsi bahkan jika @cacheresult ditambahkan.
@CacheKey Anotasi ini memungkinkan Anda untuk menentukan kunci yang di -cache
@Cacheresult @HyStrixCommand (commandProperties = {@HyStrixProperty (name = "requestCache.enabled", value = "true")}) pengguna publik findUserByIdname (@cachekey integer id, string name) {return userfeignclient.finduserbyid (@cacheKey ID, string name) {return userfeignclient.finduserbyid ( }Dalam kode di atas, kami memodifikasi bidang ID dengan @cacheKey, menunjukkan bahwa selama ID sama, cache akan di -cache secara default, dan tidak ada hubungannya dengan bidang nama. Jika kami menentukan properti CacheKeyMethod dari @cacheresult, anotasi @cacheKey tidak valid.
@Cacheremove fungsi anotasi ini adalah untuk membatalkan cache
/** * Specify the cache of this method when the findUserById is called through the @CacheRemove annotation * @param id User id * @param name User name * @return Specified user*/ @CacheResult @CacheRemove(commandKey = "findUserById") @HystrixCommand(commandProperties = { @HyStrixProperty (name = "requestCache.enabled", value = "true")}) pengguna publik findUserbyIdandName2 (@cacheKey integer id, nama string) {return userfeignclient.finduserbyid (id); }Kode di atas menentukan bahwa nilai dari CommandKey properti @cacheremove adalah foundUserbyId, yang berarti bahwa ketika findUserbyId dipanggil, cache metode ini akan dihapus.
Silakan merujuk ke versi lengkap kode: https://github.com/jingangwang/micro-service
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.