spray-cache:如果将来失败,则返回旧值

时间:2016-06-24 10:53:11

标签: scala spray

我们正在使用spray-cache(无法移动到akka-http)来缓存我们正在调用的下游服务的结果。我们想要的效果是,如果数据超过15分钟,则进行调用,否则返回缓存数据。

我们的问题是,如果服务调用失败,spray-cache将从缓存中删除该条目。我们需要的是返回旧的缓存数据(即使它已经过时),并在下一个请求进入时重试下游请求。

1 个答案:

答案 0 :(得分:3)

看起来Spray没有附带执行您想要的默认缓存实现。根据{{​​3}},Cache特征有两种实现:SimpleLruCacheExpiringLruCache

你想要的是一个Cache区分条目到期(从高速缓存中删除条目)和条目刷新(获取或计算更新的该条目的副本)。

由于两个默认实现都将这两个概念合并为一个超时值,我认为您最好的选择是编写一个新的Cache实现,以区分刷新和到期。