在服务类中基于play框架的应用程序中,我使用了play异步缓存。播放缓存内部使用ehcahe。当我试图从缓存程序流中获取值时,在此步骤中冻结。当我尝试从调试器执行这段代码时(Idea计算表达式工具)
private final AsyncCacheApi cacheApi;
...
cacheApi.getOrElseUpdate("123", () -> CompletableFuture.completedFuture(123));我犯了个错误
Compilation failed:
package com.typesafe.config does not exist
package org.keycloak does not existcacheApi通过guice传入Servce类。
服务类作为外部依赖项从外部jar加载。
为什么播放缓存看不到类?怎么修呢?
没有使用cacheApi,一切都能正常工作。
发布于 2019-12-25 10:29:16
在下面的指令https://www.playframework.com/documentation/2.7.x/JavaCache#Setting-the-execution-context之后,它可以正常工作
默认情况下,所有的咖啡因和EhCache操作都是阻塞的,异步实现将阻塞默认执行上下文中的线程。通常情况下,如果您使用Play的默认配置,它只会在内存中存储元素,因为读取应该相对较快。但是,根据缓存的配置方式,这种阻塞I/O可能太昂贵了。对于这种情况,您可以配置不同的play.cache.dispatcher并通过play.cache.dispatcher设置它,因此缓存插件可以使用它:
play.cache.dispatcher = "contexts.blockingCacheDispatcher"
contexts {
blockingCacheDispatcher {
fork-join-executor {
parallelism-factor = 3.0
}
}
``https://stackoverflow.com/questions/55392603
复制相似问题