我试图了解如果我缓存返回冷Observable的方法的结果会发生什么?该流程尚未实现,那么缓存实际包含什么?我试图找出使用Hazelcast和Spring Boot,但无法使缓存工作。
修改: 当我说缓存不起作用时,我的发言基于我从Hazelcast管理中心看到的内容。根据缓存配置(我尝试了很多东西),缓存显示但没有条目,或者缓存根本没有显示。
示例:
@javax.cache.annotation.CacheResult
Observable<Integer> random() {
// Do I get a new number every time?
return Observable.just(new Random().nextInt());
}
答案 0 :(得分:1)
来自rx-java wiki(来源here):
寒冷的Observable会发出特定的项目序列,但可以开始 当Observer发现方便时发出这个序列, 并且无论观察者想要什么,都不会破坏 序列的完整性。例如,如果您转换静态 可迭代成Observable,Observable将发出相同的内容 项目序列,无论何时订阅或如何订阅 经常观察那些物品。 a发出的项目示例 cold Observable可能包含数据库查询文件的结果 检索或网络请求。
对于冷Observable
,与您的示例一样,请求在订阅时为每个订阅者完成。即使没有缓存,如果您订阅两次到同一Observable
,请求将发生两次。 Observable
未绑定到特定流。 Observable
只是描述如何访问数据的合同。
缓存返回Observable
的方法的结果我觉得有点类似于将结果存储到本地属性;您只需避免以后再次重新创建Observable
对象。但只是“吸气者”而不是数据。
rx-java提供了一些工具来实现它自己的缓存。您可以查看Subject或ConnectableObservable。