Flux Reactor - 每小时简单的计划

时间:2018-03-07 17:32:33

标签: java scheduled-tasks project-reactor

如何使用Reactor而不是java的调度程序获得相同的效果?

Executors.newSingleThreadScheduledExecutor()
         .scheduleAtFixedRate(() -> counter.set(0) , computeDelay(), computePeriod(), TimeUnit.MILLISECONDS)

我试过

 Flux
    .interval(Duration.ofMillis(computeDelay()),  Duration.ofMinutes(RESET_PERIOD_MINUTES))
    .doOnNext( counter.set(0))
    .subscribe())

但它产生了不必要的Long值。我在Flux API中找到了一些调度程序但是在尝试创建一个我有Disposable对象的调度程序时,我不知道该怎么办呢

1 个答案:

答案 0 :(得分:1)

你找到了两个选择。 Flux.interval对于与其他运算符组合很有用。它会发出代表每个滴答的长片,因为Flux必须发出某些东西

Scheduler.schedulePeriodically是另一个选项,几乎等同于ExecutorService.scheduleAtFixedRate,除了它返回一个Disposable而不是Future of Void。 (在这两种情况下,你都用它来取消工作)