【发布时间】:2017-07-11 07:39:04
【问题描述】:
我无法始终从使用 combineLatest 运算符获得的组合中获取最后一个值。
我有 2 个热流 (a, b) 生成 高频事件(每个事件每 100 毫秒一个事件):
Flowable<OrderBook> flowA = sourceA.getObservableOrderBook(value);
Flowable<OrderBook> flowB = sourceB.getObservableOrderBook(value);
与 combineLatest 相结合,这需要将近 300 毫秒才能完成。
Flowable<OrderBookCouple> combined = Flowable.combineLatest(flowA, flowB, OrderBookCouple::new).observeOn(Schedulers.newThread());
combined.subscribe((bookCouple) -> {
System.out.println("A timestamp: " + bookCouple.aOrderBook.getTimeStamp());
System.out.println("B timestamp: " + bookCouple.bOrderBook.getTimeStamp());
Thread.sleep(300);
}
combiner 执行一次后,我想处理生成的事件的最后一个组合,意思是 (lastA, lastB)。
组合流的默认行为是将所有事件组合缓存在其自己的缓冲区中,以便组合流接收非常旧的组合,并且这个时间间隔正在爆炸。
我应该如何更改我的代码以禁用此缓冲区并始终接收最后一个组合?
【问题讨论】:
标签: java java-8 rx-java reactive-programming rx-java2