根据Reactive Stream范例,
目前,我们主要关注冷流。这些是静态的,固定长度的流,易于处理。一个更现实的反应用例可能是无限发生的事情。例如,我们可能会有一些鼠标移动,这些移动经常需要对其进行反应或推特。这些类型的流称为热流,因为它们始终在运行,并且可以在任何时间点订阅,从而错过了数据的开始。
那么我们如何实现这个热流?
答案 0 :(得分:1)
这可以使用ConnectableFlux完成,如下所示:
ConnectableFlux<Object> publish = Flux.create(fluxSink -> {
while(true) {
fluxSink.next(System.currentTimeMillis());
}
})
.publish();
答案 1 :(得分:0)
您可以使用MongoDB的上限集合来创建热流。通过在该集合上使用@Tailable
,它将创建一个发布者,该发布者发布每个新条目。借助.share()
,它将多播该发布者,因此并非每个订阅都创建一个新的数据库连接。