spray-cache: Return 未来失败时的旧值
spray-cache: Return old value if the future fails
我们正在使用 spray-cache(还不能移动到 akka-http)来缓存我们正在调用的下游服务的结果。我们想要的效果是,如果数据超过 15 分钟,则调用,否则 return 缓存数据。
我们的问题是,如果服务调用失败,spray-cache 将从缓存中删除条目。我们需要的是 return 旧的缓存数据(即使它是陈旧的),并在下一个请求进来时重试下游请求。
Spray 似乎没有随附可以满足您要求的默认缓存实现。根据 the spray-caching docs,Cache
特性有两种实现方式:SimpleLruCache
和 ExpiringLruCache
。
你想要的是一个 Cache
来区分条目 expiration(从缓存中删除条目)和条目 refresh(获取或计算条目的更新副本)。
由于两个默认实现都将这两个概念合并为一个超时值,我认为您最好的选择是编写一个新的 Cache
实现来区分刷新和过期。
我们正在使用 spray-cache(还不能移动到 akka-http)来缓存我们正在调用的下游服务的结果。我们想要的效果是,如果数据超过 15 分钟,则调用,否则 return 缓存数据。
我们的问题是,如果服务调用失败,spray-cache 将从缓存中删除条目。我们需要的是 return 旧的缓存数据(即使它是陈旧的),并在下一个请求进来时重试下游请求。
Spray 似乎没有随附可以满足您要求的默认缓存实现。根据 the spray-caching docs,Cache
特性有两种实现方式:SimpleLruCache
和 ExpiringLruCache
。
你想要的是一个 Cache
来区分条目 expiration(从缓存中删除条目)和条目 refresh(获取或计算条目的更新副本)。
由于两个默认实现都将这两个概念合并为一个超时值,我认为您最好的选择是编写一个新的 Cache
实现来区分刷新和过期。