springboot定时发送短信_SpringBoot的定时任务

本文介绍了SpringBoot如何配置和使用定时任务。通过@EnableScheduling启用定时任务,使用@Scheduled进行静态任务配置,如每日0点清空短信计数。同时,展示了动态添加任务的方法,包括使用ScheduledExecutorService和Spring的TaskScheduler,以及TaskScheduler的高级功能如CronTrigger。
摘要由CSDN通过智能技术生成

SpringBoot提供了非常简单的定时任务配置方法,不再像之前需要配置很多Quartz的文件了。

首先看一个简单的静态任务:

@Configuration

@EnableScheduling

@Slf4j

public class StaticScheduledTasks {

@Autowired

private JCacheCacheManager jCacheCacheManager;

@Value("${info.ehcache.smsTimeCount}")

private String smsTimeCount;

/**

* 每天0点清除同一手机发送短信计数

*/

@Scheduled(cron = "0 0 0 */1 * ?")

private void configureTasks() {

jCacheCacheManager.getCache(smsTimeCount).clear();

log.info("Ehcache: " + smsTimeCount + " cleared");

}

}

类上添加@EnableScheduling注解, 来启用定时任务能力, 然后用@Scheduled(cron=cron表达式)来定期执行一个任务就可以了, 非常方便。

要动态添加一个任务, 可以用Java提供的ScheduledExecutorService:

public static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(50);

scheduler.scheduleAtFixedRate(() -> {

log.debug("start heartbeatTask --> " + ctx.channel().remoteAddress());

ctx.channel().writeAndFlush(new PingWebSocketFrame());

}, 5, 15, TimeUnit.SECONDS);

也可以用Spring封装的TaskScheduler:

@Autowired

private TaskScheduler taskScheduler;

public void test(){

ScheduledFuture future = taskScheduler.scheduleAtFixedRate(()->{

System.out.println(LocalDateTime.now());

}, Instant.now(), Duration.ofSeconds(5));

try {

Thread.sleep(20000);

} catch (InterruptedException e) {

e.printStackTrace();

}

future.cancel(true);

return;

}

TaskScheduler提供了更加丰富的能力, 比如可以使用CronTrigger来规划任务,等等。Spring的官方文档提供了很详细的使用及配置说明, 就不赘述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值