当前位置: 首页 > wzjs >正文

记事本做网站表格seo和sem的联系

记事本做网站表格,seo和sem的联系,一个好的网站建设,教学网站建设目的[Java实战]Spring Boot 定时任务(十五) 一、定时任务的应用场景 数据同步:每日凌晨同步第三方数据状态检查:每5分钟扫描订单超时未支付资源清理:每小时清理临时文件报表生成:每月1号生成财务统计报表通知…

[Java实战]Spring Boot 定时任务(十五)

一、定时任务的应用场景
  1. 数据同步:每日凌晨同步第三方数据
  2. 状态检查:每5分钟扫描订单超时未支付
  3. 资源清理:每小时清理临时文件
  4. 报表生成:每月1号生成财务统计报表
  5. 通知推送:每天9点发送生日祝福短信
二、Spring Boot 定时任务的 3 种实现方式
1. 基于 @Scheduled 注解(推荐)

核心注解

  • @EnableScheduling:启动类启用定时任务
  • @Scheduled:定义任务执行规则

示例代码

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class OrderTimeoutTask {// 每5分钟执行(支持cron、fixedRate、fixedDelay)@Scheduled(cron = "0 */5 * * * ?")public void checkUnpaidOrders() {// 查询超时订单逻辑System.out.println("执行订单超时检查: " + new Date());}// 固定间隔3秒(上次结束后间隔)@Scheduled(fixedDelay = 3000)public void cleanupTempFiles() {// 清理临时文件}// 固定频率2秒(无视执行时长)@Scheduled(fixedRate = 2000)public void heartbeatCheck() {// 服务心跳检测}
}

Cron 表达式详解

字段年(可选)
0-590-590-231-311-121-7 (或 SUN-SAT)1970-2099

常用表达式示例

  • 0 0 2 * * ?:每天凌晨2点
  • 0 0/30 9-17 * * MON-FRI:工作日9点到17点每30分钟
  • 0 15 10 L * ?:每月最后一天10:15

在这里插入图片描述

2. 动态定时任务(数据库驱动)

适用场景:需要运行时调整执行周期
实现步骤

  1. 创建任务配置表
CREATE TABLE task_config (id BIGINT PRIMARY KEY,task_name VARCHAR(50) UNIQUE,cron_expression VARCHAR(20),enabled BOOLEAN
);
  1. 实现动态任务注册
@Component
public class DynamicTask implements SchedulingConfigurer {@Autowiredprivate TaskConfigRepository repository;@Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {List<TaskConfig> tasks = repository.findEnabledTasks();tasks.forEach(config -> taskRegistrar.addCronTask(() -> executeTask(config.getTaskName()),config.getCronExpression()));}private void executeTask(String taskName) {// 根据任务名称执行逻辑}
}
3. 整合 Quartz 框架(分布式支持)

优势:支持持久化、集群、动态调度
实现步骤

  1. 添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
  1. 定义 Job 类
public class EmailJob extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext context) {// 发送邮件逻辑}
}
  1. 配置触发器与调度器
@Configuration
public class QuartzConfig {@Beanpublic JobDetail emailJobDetail() {return JobBuilder.newJob(EmailJob.class).withIdentity("emailJob").storeDurably().build();}@Beanpublic Trigger emailJobTrigger() {CronScheduleBuilder schedule = CronScheduleBuilder.cronSchedule("0 0 9 * * ?");return TriggerBuilder.newTrigger().forJob(emailJobDetail()).withIdentity("emailTrigger").withSchedule(schedule).build();}
}
三、高级配置与最佳实践
1. 线程池优化

默认问题:所有任务共享单线程
自定义线程池

@Configuration
public class SchedulerConfig implements SchedulingConfigurer {@Overridepublic void configureTasks(ScheduledTaskRegistrar registrar) {ThreadPoolTaskScheduler threadPool = new ThreadPoolTaskScheduler();threadPool.setPoolSize(5);threadPool.setThreadNamePrefix("scheduled-task-");threadPool.initialize();registrar.setTaskScheduler(threadPool);}
}
2. 分布式锁防重复执行

Redisson 实现示例

@Scheduled(cron = "0 0 2 * * ?")
public void generateDailyReport() {RLock lock = redissonClient.getLock("reportLock");try {if (lock.tryLock(0, 30, TimeUnit.SECONDS)) {// 执行报表生成}} finally {lock.unlock();}
}
3. 任务监控与健康检查

暴露执行指标

@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {return registry -> registry.config().commonTags("application", "task-monitor");
}// 在任务中记录指标
@Scheduled(fixedRate = 5000)
public void recordMetrics() {Metrics.counter("tasks.executed").increment();
}
四、常见问题排查
  1. 任务未执行

    • 检查是否添加 @EnableScheduling
    • 确认 @Component@Service 注解生效
    • 查看日志中是否有异常抛出
  2. 任务重复执行(分布式环境)

    • 使用数据库乐观锁或 Redis 分布式锁
    • 开启 Quartz 集群模式
  3. 任务执行时间过长

    • 配置 @Async 异步执行
    @Async("taskExecutor")
    @Scheduled(fixedRate = 5000)
    public void processData() { /* 长时间任务 */ }
    
五、Spring Boot 定时任务 vs 其他方案
方案优点缺点
@Scheduled简单易用、零配置不支持动态调整、无持久化
Quartz功能强大、支持分布式配置复杂、依赖数据库
XXL-JOB可视化调度、报警完善需要独立部署调度中心
Elastic Job弹性扩容、数据分片学习成本高
六、总结

Spring Boot 通过 @Scheduled 提供了轻量级定时任务支持,适合单机简单场景。对于复杂需求,可结合 Quartz 或选用分布式任务调度框架(如 XXL-JOB)。关键是根据业务规模选择合适方案,并注意线程安全、幂等性、可观测性等生产级要求。

附录

  • Spring Scheduling 官方文档
  • Cron 表达式生成工具
  • Quartz 集群配置指南

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!

http://www.dtcms.com/wzjs/175038.html

相关文章:

  • .net网站搭建某产品网络营销推广方案
  • photoshop属于什么软件seo推广优化官网
  • 今日头条全部广告seo百科
  • 用户访问域名劫持网站新网站百度收录
  • wordpress微信显示图片seo优化有哪些
  • 青岛企业网站建设优化seo是谁
  • 庆阳房屋买卖网手机系统优化
  • 做网站图片怎么找扬中网站制作
  • 图片比较多的网站怎么做uc信息流广告投放
  • 六安论坛六安杂谈seo网址优化靠谱
  • 打开一张图片后点击跳转到网站怎么做搜索引擎优化自然排名的优点
  • 网站流量ip造假图片全网营销整合营销
  • 做论坛网站的应用关键词优化排名要多少钱
  • 网络技术学什么杭州seo 云优化科技
  • 创建一个个人网站长沙百度地图
  • 跨境网站成都百度seo推广
  • 网站建设计划表模板百度搜索网站排名
  • 广西贵港网站建设简述企业网站如何推广
  • 网站开发的基本技术路线营销咨询服务
  • 网站建设pc指什么软件如何建立网页
  • 企业网站怎么形成二维码百度热线电话
  • 女生学ui设计难吗长沙seo服务哪个公司好
  • 章丘公司做网站2022好用值得推荐的搜索引擎
  • 手机app安装下载软件优化网站视频
  • 阿里巴巴网站建设策略调研市场推广
  • 企业名录大全查询滁州网站seo
  • 做网站还有价值吗seo外包网站
  • 网站建设亿玛酷知名活动推广软文
  • 做洁净的网站安徽网站设计
  • 专门做试卷的网站自己如何做一个网站