Thread-Scheduling

ThreadingModel

线程调度允许用户根据需要随意制定ControllerIO线程上执行还是在Biz线程上执行还是在自定义线程上运行。

使用@Scheduled注解进行线程调度

eg.

IO线程上执行

@Scheduled(Schedulers.IO)
@GetMapping("/foo")
public String io() {
    // ....
    return "";
}

BIz线程上执行

// 在业务线程池中执行
@Scheduled(Schedulers.BIZ)
@GetMapping("/bar")
public String biz() {
    // ....
    return "";
}

不加注解默认Scheduler上执行

@GetMapping("/baz")
public String bizBatching() {
    // ....
    return "";
}

自定义Scheduler

Scheduler实现注入Spring

@Bean
public Scheduler scheduler() {
    return Schedulers.fromExecutor("foo", Executors.newCachedThreadPool());
}

在自定义Scheduler上执行

// 在业务线程池中执行
@Scheduled("foo")
@GetMapping("/foo")
public String foo() {
    // ....
    return "";
}

配置

所有配置均以restlight.server.scheduling开头

配置项 默认 说明
default-scheduler BIZ 在不加@Scheduled注解时采用的Scheduler