说我有这个代码:
Flowable.generate(e -> {
e.onNext(1);
TimeUnit.SECONDS.sleep(2);
})
.onBackpressureBuffer()
.window(5)
.observeOn(Schedulers.single())
.subscribe(this::consumer);
这会将事件以5为一组进行推送,每10秒我将得到5个元素的组(因为消费者需要2s的时间来生产商品)。
有没有办法代替5人一组?所不同的是,如果消费者足够快地处理组,则它不应该等待组填充。如果消费者花1秒钟来处理商品,则应一一处理。如果要花3秒钟来处理这些项目,那么它将得到1、2,...,5的递增列表,然后将其上限设置为5,因为这是最大窗口。