Hystrix prend en charge le résultat de la demande en cache, et la prochaine demande avec la même clé rapportera directement le résultat du cache, réduisant la surcharge de la demande. Pour utiliser cette fonction, vous devez gérer le HystrixRequestContext. Si la demande B souhaite utiliser le cache de résultat de la demande A, A et B doit être dans le même contexte. Un contexte peut être construit via HystrixRequestContext.InitializEContext () et context.shutdown (). Toutes les demandes entre ces deux instructions sont dans le même contexte. Bien sûr, ce processus de gestion peut être mis en œuvre via un filtre personnalisé. Reportez-vous à l'article précédent //www.vevb.com/article/140527.htm
Hystrix Demande Cache Annotation
@CacheResult La méthode ajoutée à cette annotation permettra la mise en cache de demande. Par défaut, tous les paramètres de la méthode sont utilisés comme touches de cache, ce qui signifie que le cache ne sera mis en cache que si tous les paramètres de la méthode sont cohérents.
@ServicePublic class userCacheService {@autowired private userFeignClient userFeignClient; / ** * @ HystrixCommand's requestcache.enabled peut contrôler si la mise en cache est prise en charge * uniquement lorsque @cacheResult est ajoutée peut être cache, même si requestcache.enabled = true * @param id id * @return spécifiée user * / @cacheresult @hystrixcommand (CommandProperties = {@hystrixproperty (name = "requestcache.Enabled =") }) Utilisateur public FindUserById (INTER ID) {return userFeignClient.FindUserById (id); }}Si requestCache.enabled est défini sur False, le cache ne fonctionnera pas même si @cacheResult est ajoutée.
@Cachekey Cette annotation vous permet de spécifier la clé mise en cache
@Cacheresult @hystrixcommand (CommandProperties = {@hystrixProperty (name = "requestCache.enabled", value = "true")}) utilisateur public finserUserByIdAndName (@Cachekey Integer id, String name) {return userFeignClient.FinDUserById (id); }Dans le code ci-dessus, nous avons modifié le champ ID avec @Cachekey, indiquant que tant que l'ID est le même, le cache sera mis en cache par défaut et qu'il n'a rien à voir avec le champ Nom. Si nous spécifions la propriété CachekeyMethod de @cacheResult, l'annotation @cachekey n'est pas valide.
@CacheMove La fonction de cette annotation est d'invalider le cache
/ ** * Spécifiez le cache de cette méthode lorsque le FindUserByid est appelé via le nom d'utilisateur @cacheMove Annotation * @param ID ID * @param nom du nom d'utilisateur * @return spécifié User * / @cacheResult @cacheMove (CommandKey = "FindUserById") @HystRixCommand (CommandProperties = {@HysTRAM "true")}) utilisateur public finserUserByIdAndName2 (@Cachekey INTER ID, nom de chaîne) {return userFeignClient.FinDuserById (id); }Le code ci-dessus spécifie que la valeur du @cacheMove Property CommandKey est FoundUserById, ce qui signifie que lorsque FindUserById est appelé, le cache de cette méthode sera supprimé.
Veuillez vous référer à la version complète du code: https://github.com/jingangwang/micro-service
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.