24、RxJava 中的流控制、背压与错误处理

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值