java RxJava Observable在SpringBoot项目中运行
我有一段代码,它使用RxJava中的Observable,RxJava正在观察C驱动器中的变化
File file = new File("C:\\");
Observable
.interval(1, TimeUnit.SECONDS)
.concatMapIterable(x -> files(file))
.distinct()
.toBlocking()
.subscribe(System.out::println);
代码打印例如新文件夹
现在我想让它在Spring Boot应用程序运行时一直运行。 现在,当我在@Test method中运行它时,它就可以工作了。 我知道我可以通过JavaSE或调度来实现,但我想这样做
# 1 楼答案
toBlocking操作符用于阻止观察者,直到所有项目都被发出,但在您的示例中,您订阅的项目可能已经在等待所有项目被发出
您仍然可以使用这种方式,但由于您使用的是执行管道异步的interval,您可能希望在主线程中获得结果,因此可以使用observerOn操作符
您可以在这里看到一些异步示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/scheduler/ObservableAsynchronous.java