RxJava 中的流控制、背压与错误处理
1. 流控制与背压
在处理 Observable 时,为了减少背压的需求,我们应避免在 subscribe() 中进行长时间运行的工作。例如,我们可以避免在 subscribe() 中直接将事件存储到数据库,而是采用如下方式:
source.subscribe(this::store);
还可以让 store 方法更具响应式,使其返回 Observable<UUID> 类型的保存记录,并仅通过 subscribe 触发订阅和副作用:
source
.flatMap(this::store)
.subscribe(uuid -> log.debug("Stored: {}", uuid));
甚至可以对 UUID 进行批量处理,以减少日志框架的开销:
source
.flatMap(this::store)
.buffer(100)
.subscribe(
hundredUuids -> log.debug("Stored: {}", hundredUuids)
);
同时,要提前考虑背压问题。可查阅 J
超级会员免费看
订阅专栏 解锁全文
916

被折叠的 条评论
为什么被折叠?



