如何在RxJava / RxScala中缓存observable

时间:2017-12-18 13:06:12

标签: mongodb rx-java hazelcast rx-scala

我有一个REST API,使用基于RxScala的反应式scala驱动程序调用mongodb。

在我的API控制器或服务层中,我需要使用缓存来避免使用hazelcast(或任何其他缓存工具)调用mongodb

我的所有服务都是异步的,只返回observable,知道如何用observable实现缓存吗?

2 个答案:

答案 0 :(得分:0)

在高速缓存 .doOnNext()的,检索作为 .myFromCacheObservable()。的 switchIfEmpty (serviceCallOrDbOrWhatever。的 doOnNext (mySaveToCache))

答案 1 :(得分:-1)

Observable<String> stringResponse = response
.flatMap(resp -> resp.getContent()
.map(bytes -> new String(bytes)))
.retry(5)
.cast(String.class)
.map(String::trim)
.cache();  //remember the sequence of items emitted by the Observable and emit the same sequence to future Subscribers

试试这个。应该帮助你。