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