更新时间:2025-01-09 GMT+08:00
分享

自定义缓存key读取失败

问题描述

运行时报错com.huaweicloud.devspore.clientcontrol.core.ClientControlCacheComponent] [ERROR] - [Expression [xxxxx] @xx: ELxxxx]

解决方案

此报错是因为使用了自定义缓存key的功能,注解中配置了@clientcontrol(rules='xxxx', key='xxxxxx')此处key的解析使用的是标准的spring的spel表达式的解析,如果报了如上错误,需要自行排查el表达式的写法是否正确。

如果实在排查不出来el表达式的问题,用户也可以选择使用自定义类的方式去生成指定的缓存key值@ClientControl(rule = "retryTest", policy = CacheOrder.CACHEFIRST, cacheManagerName = "cacheCaffine",keyGenerator = "myKeyGenerator"),其中,keyGenerator属性配置的就是自定义缓存key生成器的bean名称。

如果用户没有必须自定义缓存key的需求,可以不配置这两个属性,clientcontrol会自动生成缓存key的,生成的规则是:全路径限定名+方法名+参数的sha256,clientcontrol提供了一个公共方法来获取这个key值。ClientControlCommonHandle.getCacheKey(final String className, final String methodName, final Object[] args), 此处是伪代码,方法中传入的是全路径限定类名、方法名和参数集合。

相关文档