jetcache jectcache错误百思不得姐

bbuxkriu  于 2022-11-06  发布在  其他
关注(0)|答案(6)|浏览(275)

报错为:
2018-08-10 21:50:38,953-ERROR (com.alicp.jetcache.anno.support.CacheContext:90)- Cache operation aborted because can't find @cached definition
com.alicp.jetcache.CacheConfigException: can't find @cached definition with area=default name=getActivitySkus-, specified in public void com.xxx.xxx.service.activity.imp.CmsActivityServiceImpl.cancelGetActivitySkusCache(int)
at com.alicp.jetcache.anno.support.CacheContext.lambda$createCacheInvokeContext$1(CacheContext.java:89)
at com.alicp.jetcache.anno.method.CacheHandler.invokeWithInvalidateOrUpdate(CacheHandler.java:105)
at com.alicp.jetcache.anno.method.CacheHandler.doInvoke(CacheHandler.java:94)
at com.alicp.jetcache.anno.method.CacheHandler.invoke(CacheHandler.java:84)
at com.alicp.jetcache.anno.aop.JetCacheInterceptor.invoke(JetCacheInterceptor.java:67)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy64.cancelGetActivitySkusCache(Unknown Source)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.docleanActivityCache(InvalidActivityCache.java:42)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.cancelCache(InvalidActivityCache.java:30)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.cancelCache(InvalidActivityCache.java:15)
at com.xxx.xxx.listener.GoodsMsgListener.onApplicationEvent(GoodsMsgListener.java:59)
at com.xxx.xxx.listener.GoodsMsgListener$$FastClassBySpringCGLIB$$8b193165.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:115)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:745)
2018-08-10 21:50:39,091-ERROR (com.alicp.jetcache.anno.support.CacheContext:90)- Cache operation aborted because can't find @cached definition
引入依赖:
版本号为: 2.4.4
缓存代码为:
@OverRide
@CacheInvalidate(name = "getActivitySkus-", key = "'activityId:'+#activityId")
public void cancelGetActivitySkusCache(int activityId) {
// nothing to do cleanCache
}
@OverRide
@cached(name = "getActivitySkus-", key = "'activityId:'+#activityId")
public List getActivitySkus(int activityId) {
// to do something
return null;
}
@cached的字母C为大写,但是issues这里显示出来为小写。
其中加缓存时缓存生效,redis中有值。失效缓存时,redis值被清除。也就是功能正常,但是一失效缓存时就报错,百思不得解,如果您有时间,请帮我解惑一下,谢谢

cvxl0en2

cvxl0en21#

从你给的信息看配置没有问题。你能通过一个简单的例子重现吗?
版本也升级一下吧。

t3psigkw

t3psigkw2#

可能和你用了 @Async 有关,你是在启动过程中调用了 @Async 方法吗?

s4n0splo

s4n0splo3#

谢谢你的回答。
在启动过程中调用了@async方法吗?是的,在服务器启动之后,我是对rocketMq监听到的消息中,用了Spring中@async,在Spring的异步方法中调用了失效缓存的方法。但是我还有一个手动清除缓存的http链接,直接访问该链接是没有使用Spring中@async的,访问该链接后会直接调用清除方法,但是同样报错。
我用它的版本号2.4.4,对应的spring版本是参照jetcache的2.4.4版本依赖的spring版本引入的。请问一下,如果升级,升级到哪个版本比较合适

busg9geu

busg9geu4#

@async
@component
public class GoodsMsgListener {

private static Logger logger = LoggerFactory.getLogger(GoodsMsgListener.class);

@Resource(name="InvalidAllSkusCache")
private InvalidCacheService<List<Integer>> allSkusCache;

@Resource(name="InvalidActivityCache")
private InvalidCacheService<List<Integer>> activityCache;

@Resource(name="InvalidSpecialSkuCache")
private InvalidCacheService<List<Timestamp>> specialSkuCache;

@Resource
private ShopActivitySkuQueryProvider provider;

@Resource
private ShopSkuCommissionProvider shopSkuCommissionProvider;

@EventListener
public void onApplicationEvent(List<UpdateProductMsgBody> bodys){

	for (UpdateProductMsgBody body : bodys) {
		logger.info("监听到的skuid为 :" + body.getSkuId());
	}

	List<Integer> skuIds = extractSkuids(bodys);
	if(skuIds.size() == 0){
		return ;
	}
	List<Integer> activityIds = provider.listUnionActivityId(skuIds);
	allSkusCache.cancelCache(skuIds);//这里是调用了缓存失效的方法
	activityCache.cancelCache(activityIds);//这里是调用了缓存失效的方法

	List<Timestamp> startTimes = shopSkuCommissionProvider.getSpecialStartTimeBySkuids(skuIds);
	specialSkuCache.cancelCache(startTimes);//这里是调用了缓存失效的方法
}

private List<Integer> extractSkuids(List<UpdateProductMsgBody> bodys){
	if(bodys == null || bodys.size() == 0){
		return Collections.emptyList();
	}
	List<Integer> skuids = new ArrayList<Integer>();
	for (UpdateProductMsgBody body : bodys) {
		if(body != null){
			skuids.add(body.getSkuId());
		}
	}
	return skuids;
}

}

x7rlezfr

x7rlezfr5#

增加缓存时,不仅功能正常,而且不报错。只有失效缓存时才出现上述错误。给您添麻烦了,请您有空时再帮我看下。

zbdgwd5y

zbdgwd5y6#

我猜调用报错的时候,jetcache还没有初始化完成,可能和异步调用有关。

这个错误看起来是刚启动的时候才会报的,如果跑热之后不再报了,你可以忽略这个错误。这块jetcache本身可能有有待优化的地方,我有空的时候继续看一看。

版本可以升级到最新的2.5.6。

代码要用markdown的形式写,否则你就是在AT别人。

相关问题