已通过实际测试有效:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; @Configuration @EnableScheduling // 或者在启动类中加这个注解,这样无需每个任务类都加 public class MQScheduler implements SchedulingConfigurer { private static final Logger logger = LoggerFactory.getLogger(MQScheduler.class); @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addTriggerTask( () -> doMyWork(), // 想要做什么 triggerContext -> { String cron = "0 0/5 * * * ?"; // 从数据库读取 Cron 表达式 return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } private void doMyWork() { // ... logger.info("读取到的MQ消息:{}", "啊,大海啊,你全是水"); } }