要求如下:
我尝试过不同的可流动操作符。非常接近这些要求的是带有缓冲区大小的observeOn。但是这个算子背后有一些魔力:当缓冲区已满时,它会逐渐清空,直到它的大小低于其总容量的25%,并且在此过程中不会向生产者请求任何项目。
我应该使用哪个运营商或运营商组合来满足这些要求?
提前致谢。
答案 0 :(得分:0)
使用多个rebatchRequests
(在封面下使用observeOn)来人为地提高进一步请求的级别。
答案 1 :(得分:0)
我终于得出结论,自定义可流动操作符可以是管理溢出(通过背压)和下溢(通过实际上充当元素库以避免饥饿的缓冲区)的可接受解决方案。
当此操作符连接到可流动管道时,元素库将填充生产者发出的元素。消费者根据需要获取储存在储存库中的元素。生产者和消费者在两个不同的调度程序上运行。
溢出情况:
下溢情况:
生命周期
此操作符在溢出和下溢情况下都是非阻塞的。
<强>用法:强>
ReservoirOperator op = new ReservoirOperator(bufferSize, Schedulers.io());
upstream.lift(op).subscribe(consumer);