用反应流桥接同步和异步世界(项目Reactor)

时间:2019-07-15 08:17:27

标签: java reactive-programming project-reactor reactive-streams backpressure

我有一个算法,使用缓冲通道进行背压以及系统线程和绿色线程的混合,可以很容易地映射到Clojure(也许是Go)并发样式。我目前正在使用Java和Spring进行项目,我想知道是否/如何使用Reactive Streams模型。

有一个长期运行的缓慢阻塞IO进程*,该操作会分批获取一些标识符(比方说,每批50个)。该过程通过缓冲的通道(假设是10个大小的缓冲区)一一发送这些标识符,并在缓冲区已满时开始阻塞。这样可以确保始终有新的标识符在飞行中,随时可以使用,并且还可以保证背压:仅当最后10个标识符用尽时才完成50批提取。

然后,短暂的绿色线程(在Clojure中的线程池上运行的循环)在并发Web请求时以异步方式并发地异步消耗该通道。

总而言之,必需的功能:
-长时间阻止IO Producer
-缓冲和背压机制
-短暂的异步使用者

有什么想法如何使用反应流/ Project Reactor的通量实现这种算法吗?

*(JDBC调用,具有行锁定功能,增加一些计数器并提供一些尚未使用的标识符的审核日志)

干杯

0 个答案:

没有答案