Spring Task 与 WebSocket 实战:苍穹外卖订单实时通知方案
在苍穹外卖项目的开发中,订单的定时处理和实时通知是提升用户体验的关键环节。为了实现来单提醒、催单以及订单状态更新等功能,我们需要引入 Spring Task 进行定时调度,并利用 WebSocket 实现服务端主动推送。
Spring Task 入门与实践
什么是 Spring Task
Spring Task 是 Spring 框架内置的轻量级定时任务调度框架。相比 Quartz,它配置更简单,无需依赖第三方库,非常适合单体应用中的常规定时任务场景。
核心优势包括零侵入性(基于注解)、轻量级以及对 Spring 生态的无缝集成(支持依赖注入和事务管理)。
快速上手
1. 开启调度支持
在启动类或配置类上添加 @EnableScheduling 注解即可激活定时任务功能:
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. 编写任务类
创建一个组件,使用 @Scheduled 注解标记需要定时执行的方法。支持三种调度模式:
- 固定延迟 (
fixedDelay):上次任务结束后等待指定时间再执行下一次。 - 固定频率 (
fixedRate):每隔指定时间执行一次,不等待上次任务完成。 - Cron 表达式 (
cron):灵活定义执行时间点。
@Component
public class ScheduledTasks {
private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
/**
* 固定延迟:上次执行完成后间隔 5 秒执行
*/
@Scheduled(fixedDelay = 5000)
public void taskWithFixedDelay() {
logger.info("FixedDelay Task - 当前时间:{}", System.currentTimeMillis());
}
{
logger.info(, System.currentTimeMillis());
}
}


