Flux Reactor - 每小时的简单时间表
Flux Reactor - simple schedule every hour
如何使用 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 对象,然后我不知道应该如何处理它
您找到了两个选项。 Flux.interval 可用于与其他运算符组合。它发出代表每个刻度的多头,因为 Flux 必须发出 something
Scheduler.schedulePeriodically 是另一个选项,几乎等同于 ExecutorService.scheduleAtFixedRate,除了它 returns 是 Disposable 而不是 Future of Void。 (在这两种情况下你都会用它来取消工作)
如何使用 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 对象,然后我不知道应该如何处理它
您找到了两个选项。 Flux.interval 可用于与其他运算符组合。它发出代表每个刻度的多头,因为 Flux 必须发出 something
Scheduler.schedulePeriodically 是另一个选项,几乎等同于 ExecutorService.scheduleAtFixedRate,除了它 returns 是 Disposable 而不是 Future of Void。 (在这两种情况下你都会用它来取消工作)