RxJava2:分组的多个退出条件

时间:2019-02-27 15:19:58

标签: rx-java2

在以下情况下,我想根据我的takeUntil运算符确定我的小组是否完整。但是最近,我们遇到了这样一种情况,数据库正在流式传输的记录被延迟了几秒钟(由于网络的原因),最后我们处理了不完整的记录组,因为最后一个记录到达了其他所需记录之前。因此,现在我计划实施一个解决方案,当takeUntil运算符返回true时,我希望等待X秒钟。

在帮助您获得相同帮助方面,我们深表感谢。

Flowable<List<DBRecord>> flowable = observable
                .toFlowable(BackpressureStrategy.BUFFER)
                .groupBy(callrecord -> callrecord.getSessionid())
                .flatMapSingle(group -> 
                    group
                        .timeout(1, TimeUnit.HOURS) // Certain cases records can come within one
                        .onErrorResumeNext(Flowable.never())
                        .takeUntil(cr -> cr instanceof CCDR && ((CCDR) cr).isCallCompleted())
                        .toList()
                );

更多信息

在我们的例子中,正是数据库在执行CRUD操作时流式传输记录。对我们来说,当我有一组N个不同种类的记录(事先未知,但可以确定是否可以访问这些记录)时,从逻辑上来说是完整的,其结尾由takeUntil运算符指示。现在,由于数据库是远程的,因此碰巧发生了,直到对takeUntil进行评估之前,其中一条记录才到达我们。换句话说,我收到的是最后一条记录,而不是另一个所需的记录。

0 个答案:

没有答案