A Hystrix suporta o resultado do cache de uma solicitação e a próxima solicitação com a mesma chave buscará diretamente o resultado do cache, reduzindo a sobrecarga da solicitação. Para usar essa função, você deve gerenciar o HystrixRequestContext. Se a solicitação B quiser usar o cache de resultado da solicitação A, A e B devem estar no mesmo contexto. Um contexto pode ser construído através do hystrixRequestContext.initializeContext () e context.shutdown (). Todas as solicitações entre essas duas declarações estão no mesmo contexto. Obviamente, esse processo de gerenciamento pode ser implementado através de um filtro personalizado. Consulte o artigo anterior //www.vevb.com/article/140527.htm
Anotação de cache de solicitação Hystrix
@CacheResult O método adicionado a esta anotação permitirá o cache de solicitação. Por padrão, todos os parâmetros do método são usados como teclas de cache, o que significa que o cache só será armazenado em cache se todos os parâmetros do método forem consistentes.
@ServicePublic Classe UserCacheService {@AUTOWIRED PRIVADO PRIVADO DO USERFEIGNIENTEIGNIENT; / *** @HystrixCommand O requestcache.enabled pode controlar se o cache é suportado* somente quando o @cacheResult é adicionado pode cache, mesmo se requestcache.enabled = true* @param id id* @return user = @cacherix @HySTrixCommand (CommandProties = {{ }) usuário público findUserById (ID inteiro) {return userFeignClient.findUserById (id); }}Se o requestcache.enabled estiver definido como false, o cache não funcionará, mesmo que o @CacheResult seja adicionado.
@Cachekey Esta anotação permite especificar a chave em cache
@CacheResult @hystrixCommand (commandProperties = {@hystrixProperty (name = "requestcache.enabled", value = "true")}) public user findUserByIdAndName (@cachekey ID inteiro, nome de string) {return userFeignient.finduserbyid (id); }No código acima, modificamos o campo de identificação com @cachekey, indicando que, desde que o ID seja o mesmo, o cache será armazenado em cache por padrão e não tem nada a ver com o campo de nome. Se especificarmos a propriedade CacheKeymethod do @CacheResult, a anotação @cachekey será inválida.
@Cacheremove A função desta anotação é invalidar o cache
/ ** * Especifique o cache desse método quando o findUserById é chamado através da anotação @CacheReve * @Param ID ID do usuário * @param Nome Nome do usuário * @return Usuário especificado */ @cacheResult @cacheRemove (commandKey = "findUserById") @HySTRIXENCIMAN (CommandPerties ("{" findUsuRyId) @HySTrixComMAnd (" "True")}) Usuário público findUserByIDAndName2 (@cachekey ID inteiro, nome da string) {return userFeignClient.findUserById (id); }O código acima especifica que o valor do @CacheRemove Property CommandKey é FundUserById, o que significa que, quando o FindUserById é chamado, o cache desse método será excluído.
Consulte a versão completa do código: https://github.com/jingangwang/micro-service
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.