首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Playframework异步缓存找不到现有的类

Playframework异步缓存找不到现有的类
EN

Stack Overflow用户
提问于 2019-03-28 07:57:52
回答 1查看 82关注 0票数 0

在服务类中基于play框架的应用程序中,我使用了play异步缓存。播放缓存内部使用ehcahe。当我试图从缓存程序流中获取值时,在此步骤中冻结。当我尝试从调试器执行这段代码时(Idea计算表达式工具)

代码语言:javascript
复制
private final AsyncCacheApi cacheApi;
...
cacheApi.getOrElseUpdate("123", () -> CompletableFuture.completedFuture(123));

我犯了个错误

代码语言:javascript
复制
Compilation failed: 
package com.typesafe.config does not exist 
package org.keycloak does not exist

cacheApi通过guice传入Servce类。

服务类作为外部依赖项从外部jar加载。

为什么播放缓存看不到类?怎么修呢?

没有使用cacheApi,一切都能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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设置它,因此缓存插件可以使用它:

代码语言:javascript
复制
play.cache.dispatcher = "contexts.blockingCacheDispatcher"

contexts {
  blockingCacheDispatcher {
    fork-join-executor {
      parallelism-factor = 3.0
    }
  }
``
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55392603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档