spring - 使用cron在Spring中安排周期性的 react 任务?

标签 spring spring-boot cron spring-webflux project-reactor

通常我会做这样的事情来安排一个作业在给定的时区中使用 cron 在 Spring 中定期执行:

@Scheduled(cron = "0 0 10 * * *", zone = "Europe/Stockholm")
public void scheduleStuff() {
    // Do stuff
}

这将阻塞调用 scheduleStuff 的线程直到作业完成。但是在这种情况下,我想做的“东西”都是使用 Springs 的 project reactor 的非阻塞构建 block 来实现的。 (即 MonoFlux 等)。

例如。假设我想定期触发此功能:
Flux<Void> stuff() {
    return ..
}

我当然可以直接调用stuff().subscribe() (甚至 stuff().block() )但这会阻塞线程。有没有更好的方法来实现与 @Scheduled(cron = "0 0 10 * * *", zone = "Europe/Stockholm") 相同的目标?对于非阻塞代码?

我正在使用 Spring Boot 2.1。

最佳答案

实际上,subscribe()不会阻塞你的线程。您可以调用stuff().subscribeOn(Schedulers.parallel()).subscribe()或其他调度程序,以确保执行将在单独的线程中完成,如果你真的需要它。

关于spring - 使用cron在Spring中安排周期性的 react 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53835800/

相关文章:

java - 元素 "mvc"的前缀 "mvc:resources"未绑定(bind)

spring - 内容类型 'multipart/form-data;boundary=----WebKitFormBoundary...' 不支持 Spring

javascript - Cron 表达式到 angularjs 中人类可读的表达式

java - @Valid @RequestBody 无法验证输入错误的传入 Json

java - Spring WebClient 放置映射 : Content type 'application/json' not supported

java - 如何在模型映射器中跳过目标源中的属性?

java - Hibernate,保存新实体而不获取关联实体

PHP & 定时任务 : security issues

linux - ubuntu 中的 Cron Job 未获得所需的输出

java - Spring 是否生成验证代码?