RxJava Observable在SpringBoot项目中运行



我的代码使用了RxJava中的Observable来观察C驱动器中的变化,

File file = new File("C:\");
        Observable
                .interval(1, TimeUnit.SECONDS)
                .concatMapIterable(x -> files(file))
                .distinct()
                .toBlocking()
                .subscribe(System.out::println);

代码打印例如new folder.

现在我想让它在Spring-Boot应用程序运行时一直运行。现在,当我在@Test方法中运行它时,它工作了。我知道我可以通过java或调度来实现但我想这样做

toBlocking操作符用于阻塞观察者,直到所有项都被发出,但在你的例子中,你是订阅的,所以可能你已经在等待所有项都被发出了。

你仍然可以使用这种方式,但是因为你使用的是异步执行管道的interval,你可能希望在主线程中获得结果,所以你可以使用observerOn操作符

Scheduler scheduler;//Main thread
Observable
                .interval(1, TimeUnit.SECONDS)
                .concatMapIterable(x -> files(file))
                .distinct()
                .observerOn(scheduler)
                .subscribe(System.out::println);

您可以在这里看到一些异步示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/scheduler/ObservableAsynchronous.java

相关内容

  • 没有找到相关文章

最新更新