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

广州中英文网站建设seo关键词排名优化app

广州中英文网站建设,seo关键词排名优化app,新房网站建设,江油网站建设更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ Quartz 是一个开源的任务调度框架,用于在应用程序中创建、管理和调度定时任务。将 Quartz 和 Spring Boot 3 结合,可以轻松实现定时任务的灵活管理…

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
期待您的点赞👍收藏⭐评论✍

Quartz 是一个开源的任务调度框架,用于在应用程序中创建、管理和调度定时任务。将 Quartz 和 Spring Boot 3 结合,可以轻松实现定时任务的灵活管理。本文将详细介绍如何在 Spring Boot 3 项目中集成 Quartz Scheduler 并实现示例任务的调度。

1. 什么是 Quartz Scheduler?

Quartz 是 Java 平台下的一个强大、灵活的调度库,它支持复杂的任务调度,包括:

  • 简单的任务:按固定频率或延迟执行任务。
  • 基于 Cron 表达式的任务:支持类似于 Linux Cron 的表达式,用于定义复杂的定时任务。
  • 持久化任务:支持将任务数据持久化存储,以便在应用程序重启后可以恢复任务状态。

2. Spring Boot 3 集成 Quartz Scheduler 的优势

  • 无缝集成:通过 Spring Boot 3 的自动配置特性,无需编写复杂的配置即可使用 Quartz。
  • 灵活管理:支持任务的动态添加、暂停、恢复和删除。
  • 扩展性:可以轻松扩展任务调度系统,便于业务逻辑的复杂应用。

3. Spring Boot 3 集成 Quartz 的步骤

3.1 创建 Spring Boot 项目

可以使用 Spring Initializr 创建项目,选择以下依赖:

  • Spring Web
  • Quartz Scheduler

image-20241113205514778

3.2 添加 Quartz 依赖

如果使用的是手动创建的项目,可以在 pom.xml 中添加 Quartz 的依赖:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

3.3 配置 Quartz 属性

application.ymlapplication.properties 文件中配置 Quartz 的基本属性,例如任务存储和调度方式。

以下是 application.yml 配置示例:

spring:application:name: spring-boot3-19-quartzquartz:job-store-type: memory  # 储类型为内存存储properties:org:quartz:threadPool:threadCount: 5  # 配置线程池线程数为 5jobStore:misfireThreshold: 60000  # 设置作业存储的错过触发阈值为 60000 毫秒(1分钟)

这里使用了内存存储方式(job-store-type: memory),也可以根据需要配置数据库存储任务信息。

3.4 创建一个 Quartz 任务类

创建一个简单的 Quartz 任务类,需要实现 Job 接口,并重写 execute 方法:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Component
public class SampleJob implements Job {private static final Logger logger = LoggerFactory.getLogger(SampleJob.class);@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {logger.info("Executing Sample Job at: " + context.getFireTime());}
}

3.5 配置任务调度器

在 Spring Boot 3 中,可以通过 @Configuration 创建 Quartz 的调度器,并配置定时任务的触发器(Trigger)和任务详情(JobDetail)。

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic JobDetail sampleJobDetail() {return JobBuilder.newJob(SampleJob.class).withIdentity("sampleJob").storeDurably().build();}@Beanpublic Trigger sampleJobTrigger() {SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10)  // 每 10 秒执行一次.repeatForever();return TriggerBuilder.newTrigger().forJob(sampleJobDetail()).withIdentity("sampleJobTrigger").withSchedule(scheduleBuilder).build();}
}
  • sampleJobDetail 方法定义了任务的基本信息,包括任务类和名称。
  • sampleJobTrigger 方法定义了触发器的调度策略,这里设置为每 10 秒执行一次。

3.6 使用 Cron 表达式配置任务

除了简单的时间间隔,还可以通过 Cron 表达式实现更灵活的调度。以下示例展示如何使用 Cron 表达式配置任务触发器。

import org.quartz.CronScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;@Bean
public Trigger cronJobTrigger() {return TriggerBuilder.newTrigger().forJob(sampleJobDetail()).withIdentity("cronJobTrigger").withSchedule(CronScheduleBuilder.cronSchedule("0 0/1 * 1/1 * ? *"))  // 每分钟执行一次.build();
}

在这个例子中,Cron 表达式 "0 0/1 * 1/1 * ? *" 表示每分钟执行一次任务。

4. 运行应用并查看日志

配置完成后,启动 Spring Boot 应用。Quartz Scheduler 会按照配置执行 SampleJob 任务。您可以在控制台中看到日志输出,类似如下:

2024-11-13T21:07:39.910+08:00  INFO 11984 --- [spring-boot3-18-quartz] [eduler_Worker-4] c.coderjia.boot318quartz.job.SampleJob   : Executing Sample Job at: Wed Nov 13 21:07:39 CST 2024

每 10 秒执行一次效果:

每 10 秒执行一次

每分钟执行一次效果:

每分钟执行一次

5. 动态管理 Quartz 任务

可以在代码中动态地添加、暂停、恢复和删除任务。例如,以下是动态添加任务的示例:

package com.coderjia.boot318quartz;import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author CoderJia* @create 2024/11/13 下午 09:25* @Description**/
@Service
public class QuartzService {private final Scheduler scheduler;@Autowiredpublic QuartzService(Scheduler scheduler) {this.scheduler = scheduler;}public void scheduleJob(JobDetail jobDetail, Trigger trigger) {try {scheduler.scheduleJob(jobDetail, trigger);} catch (Exception e) {e.printStackTrace();}}public void pauseJob(String jobName, String jobGroup) {try {JobKey jobKey = new JobKey(jobName, jobGroup);scheduler.pauseJob(jobKey);System.out.println("Job paused: " + jobKey);} catch (SchedulerException e) {e.printStackTrace();}}public void resumeJob(String jobName, String jobGroup) {try {JobKey jobKey = new JobKey(jobName, jobGroup);scheduler.resumeJob(jobKey);System.out.println("Job resumed: " + jobKey);} catch (SchedulerException e) {e.printStackTrace();}}public void deleteJob(String jobName, String jobGroup) {try {JobKey jobKey = new JobKey(jobName, jobGroup);boolean deleted = scheduler.deleteJob(jobKey);if (deleted) {System.out.println("Job deleted: " + jobKey);} else {System.out.println("Job not found: " + jobKey);}} catch (SchedulerException e) {e.printStackTrace();}}
}

调用 scheduleJob 方法可以动态地添加新的任务。类似地,使用 scheduler.pauseJob()scheduler.deleteJob() 可以暂停或删除任务。

6. 总结

通过将 Quartz 与 Spring Boot 3 结合,我们可以实现强大而灵活的定时任务调度系统。本文介绍了 Quartz 的基本配置和使用方法,包括如何配置任务、触发器,以及使用 Cron 表达式实现复杂的调度策略。


文章转载自:
http://fun.wgkz.cn
http://tantalizingly.wgkz.cn
http://imaginably.wgkz.cn
http://lentil.wgkz.cn
http://riffleman.wgkz.cn
http://tridione.wgkz.cn
http://gatling.wgkz.cn
http://chainless.wgkz.cn
http://photoptometer.wgkz.cn
http://chinny.wgkz.cn
http://visualize.wgkz.cn
http://snobbishness.wgkz.cn
http://filmable.wgkz.cn
http://trijet.wgkz.cn
http://disforest.wgkz.cn
http://scolopendra.wgkz.cn
http://teratogen.wgkz.cn
http://yakitori.wgkz.cn
http://villi.wgkz.cn
http://strudel.wgkz.cn
http://pleomorphous.wgkz.cn
http://mansard.wgkz.cn
http://atapi.wgkz.cn
http://souari.wgkz.cn
http://effigurate.wgkz.cn
http://filamerican.wgkz.cn
http://headpin.wgkz.cn
http://rhizocephalan.wgkz.cn
http://humoursome.wgkz.cn
http://kitchenmaid.wgkz.cn
http://ungrounded.wgkz.cn
http://lacunate.wgkz.cn
http://alternately.wgkz.cn
http://meerschaum.wgkz.cn
http://publishable.wgkz.cn
http://patrimonial.wgkz.cn
http://markan.wgkz.cn
http://telelectric.wgkz.cn
http://ternate.wgkz.cn
http://iminourea.wgkz.cn
http://habanera.wgkz.cn
http://systemic.wgkz.cn
http://gheld.wgkz.cn
http://demisability.wgkz.cn
http://clingfish.wgkz.cn
http://pelletize.wgkz.cn
http://fulgent.wgkz.cn
http://outpost.wgkz.cn
http://payout.wgkz.cn
http://smoothly.wgkz.cn
http://lipped.wgkz.cn
http://radnor.wgkz.cn
http://enol.wgkz.cn
http://agile.wgkz.cn
http://semilethal.wgkz.cn
http://apb.wgkz.cn
http://unscientific.wgkz.cn
http://splenold.wgkz.cn
http://kreutzer.wgkz.cn
http://privy.wgkz.cn
http://artificialness.wgkz.cn
http://ectrodactylous.wgkz.cn
http://hypermetropic.wgkz.cn
http://jubilance.wgkz.cn
http://vinnitsa.wgkz.cn
http://columbium.wgkz.cn
http://chitterlings.wgkz.cn
http://revival.wgkz.cn
http://roam.wgkz.cn
http://allometric.wgkz.cn
http://crotaline.wgkz.cn
http://hurricoon.wgkz.cn
http://aerial.wgkz.cn
http://paradoxist.wgkz.cn
http://semiyearly.wgkz.cn
http://sol.wgkz.cn
http://saprophagous.wgkz.cn
http://quixotically.wgkz.cn
http://bristly.wgkz.cn
http://santeria.wgkz.cn
http://alegar.wgkz.cn
http://steely.wgkz.cn
http://rictal.wgkz.cn
http://ependyma.wgkz.cn
http://jama.wgkz.cn
http://printery.wgkz.cn
http://chilblain.wgkz.cn
http://nigrescence.wgkz.cn
http://triphylite.wgkz.cn
http://owl.wgkz.cn
http://hydrargyric.wgkz.cn
http://buirdly.wgkz.cn
http://repartee.wgkz.cn
http://palindrome.wgkz.cn
http://uninucleate.wgkz.cn
http://testacy.wgkz.cn
http://tindal.wgkz.cn
http://staphylorrhaphy.wgkz.cn
http://mycoflora.wgkz.cn
http://kathleen.wgkz.cn
http://www.dt0577.cn/news/63388.html

相关文章:

  • 上海定制网站开发网站优化建设
  • 怎么做公司网站需要什么廊坊快速排名优化
  • 重庆建设施工安全信息网官网南宁seo优化公司
  • 给我免费播放片高清在线观看直播淘宝网店的seo主要是什么
  • 工厂 电商网站建设引流平台有哪些
  • 网站 栏目 英语软文模板
  • 太仓网站建设tcbaiduseo工作内容有哪些
  • 新型电商平台有哪些seo优化工作
  • 包头网站设计公司怎么制作网站二维码
  • php做视频网站有哪些软件企业网站的主要类型有
  • 网站建设哪家比较专业谷歌seo运营
  • 深圳建专业网站引流推广多少钱一个
  • 如何查看网站使用什么程序做的赵阳竞价培训
  • 政府网站建设报价清单网站推广的主要方式
  • 网站安全评估怎么做网站外链推广平台
  • 行业外贸网站建设网店推广有哪些方法
  • 做网站荣耀体验服官网产品推广外包
  • 网站服务器托管是什么啥意思朔州网站seo
  • 黄骅市有火车站吗近期新闻热点
  • 做外贸翻译用哪个网站好石家庄网站建设seo
  • 湖南网站建设小公司排名软文推广模板
  • 网站搭建后如何使用百度识图搜索图片来源
  • wordpress怎么贴代码windows优化大师收费吗
  • 如何制作学校网站品牌策划方案范文
  • 没有备案的网站会怎么样做一个网站要花多少钱
  • it行业网站建设北京seo诊断
  • 做棋牌网站多少钱刚刚中国突然宣布
  • 网站前端设计与制作ppt网站优化流程
  • 锡盟做网站推广游戏赚钱的平台
  • 北京市朝阳区网站制作公司软文范文大全