如何创建用于数据流的Flux / Publisher

时间:2019-06-24 23:53:34

标签: java reactive-programming project-reactor

我正在使用一种轮询方法来定期获取数据。新数据可能随时到达。我想向我的客户端公开一个反应式接口。因此,我想创建一个发布者(Flux?),该发布者将在新数据可用时发布新数据并通知订户。我怎么做?我看到的所有Flux示例都是针对已经知道/可用数据的情况。实际上,我想要基于队列的Flux之类的东西,而轮询线程可以在发现新数据时继续填充队列。

1 个答案:

答案 0 :(得分:1)

对于简单的事情,您可能想使用DirectProcessor。这不是最复杂的助焊剂吸收器,但可以让您有所了解。

我写了一个简单的例子,对不起,它在科特林。

val hot = DirectProcessor.create<String>()
hot.onNext("Hello")//not printed
hot.subscribe { println(it) }
//Java: hot.subscribe((it) -> System.out.println(it));


hot.onNext("Goodbye")//printed
Thread.sleep(100)
hot.onNext("foo")//printed

DirectProcessor实现了Flux,因此您可以像Flux一样使用它。

如您所见,订阅热源之前添加的元素不会传递到订阅。

看看其他帖子,Flux#create和Flux#generate可能是一个不错的起点。 Difference Between Flux.create and Flux.generate这将使您更加复杂并可以控制通量。