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

郑州的网站建设代发百度帖子包收录排名

郑州的网站建设,代发百度帖子包收录排名,深圳城乡和住房建设局网站,wordpress启动慢一、引言 常见的定时任务框架有 Quartz、elastic-job、xxl-job等等,本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。 二、Quartz 简介 Quartz 是一个功能强大且灵活的开源作业调度库,广泛用于 Java 应用中。它允许开发者创建复杂的调度任务&…

一、引言

常见的定时任务框架有 Quartz、elastic-job、xxl-job等等,本文主要介绍 Spirng Boot 集成 Quartz 定时任务框架。

在这里插入图片描述

二、Quartz 简介

Quartz 是一个功能强大且灵活的开源作业调度库,广泛用于 Java 应用中。它允许开发者创建复杂的调度任务,包括简单的周期性任务和复杂的日程安排。Quartz 支持多种类型的任务调度,包括按时间间隔、特定时间点、日历时间和其他复杂的时间表达式。

主要特性:

  • 丰富的调度表达式:支持 Cron 表达式,可以非常灵活地定义任务的调度时间。
  • 持久化支持:Quartz 支持将调度任务存储到数据库中,以保证任务在应用重启后能够继续执行。
  • 集群支持:Quartz 可以在集群环境中运行,提供高可用性和负载均衡功能。
  • 多种触发器:支持多种触发器,包括简单触发器、Cron触发器等。
  • 任务监听器:支持任务的监听器,能够在任务执行前后执行一些额外操作。

二、在 Spring Boot 中集成 Quartz

在 Spring Boot 中集成 Quartz 非常简单,Spring 提供了对 Quartz 的良好支持。以下是一个简单的例子,展示如何在 Spring Boot 项目中使用 Quartz。

步骤 1: 添加依赖

pom.xml 文件中添加以下依赖:

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

步骤 2: 创建一个任务

定义一个简单的 Quartz 任务类:

package com.example.demo;import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.stereotype.Component;@Component
public class SampleJob implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Executing Sample Job at " + System.currentTimeMillis());}
}

步骤 3: 配置 Quartz

在 Spring Boot 中配置 Quartz 调度器。可以在 application.properties 或 application.yml 文件中进行配置,也可以通过代码配置。

# 指定Quartz使用的作业存储类型为内存(RAMJobStore),这意味着所有的作业和触发器信息都将存储在内存中。
# 这种方式的存取速度较快,但在系统重启后,所有数据将会丢失,因此它不适合需要持久化作业信息的集群环境。
spring.quartz.job-store-type=memory# 设置Quartz Scheduler的名称,用于区分不同的Scheduler实例。
spring.quartz.scheduler-name=SampleScheduler# 配置当应用启动时,如果检测到已存在的作业(job)与配置的作业相同,则允许覆盖它们。
# 这可以避免在修改作业后需要手动删除数据库中的相关记录。
spring.quartz.overwrite-existing-jobs=true# 配置Quartz线程池的线程数量,这里设置为5
spring.quartz.properties.org.quartz.threadPool.threadCount=5

步骤 4: 创建作业详情和触发器

通过 Java 配置类创建调度任务:

package com.example.demo;  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;  // 这是一个Spring配置类,用于定义Quartz的JobDetail和Trigger  
@Configuration  
public class QuartzConfig {  // 定义一个Bean,用于创建JobDetail实例  // JobDetail描述了Quartz要执行的具体任务  @Bean  public JobDetail sampleJobDetail() {  // 使用JobBuilder来构建一个JobDetail实例  // newJob(SampleJob.class)指定了实际要执行的Job类为SampleJob  // withIdentity("sampleJob")为这个JobDetail设置了一个唯一标识符  // storeDurably()使得JobDetail即使在没有Trigger关联的情况下也能被存储  return JobBuilder.newJob(SampleJob.class)  .withIdentity("sampleJob")  .storeDurably()  .build(); // 构建并返回JobDetail实例  }  // 定义一个Bean,用于创建Trigger实例(触发器)  // Trigger描述了JobDetail的执行计划,即何时开始执行、执行的频率等  @Bean  public Trigger sampleJobTrigger() {  // 使用SimpleScheduleBuilder来构建一个简单的调度计划  // withIntervalInSeconds(10)设置了任务执行的间隔为10秒  // repeatForever()表示任务将无限次重复执行  SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()  .withIntervalInSeconds(10)  .repeatForever();  // 使用TriggerBuilder来构建Trigger实例  // forJob(sampleJobDetail())指定了Trigger关联的JobDetail为之前定义的sampleJobDetail  // withIdentity("sampleTrigger")为这个Trigger设置了一个唯一标识符  // withSchedule(scheduleBuilder)设置了之前定义的调度计划  return TriggerBuilder.newTrigger()  .forJob(sampleJobDetail()) // 注意这里通常使用JobDetail的引用而不是方法调用,但在这个例子里也可以  .withIdentity("sampleTrigger")  .withSchedule(scheduleBuilder)  .build(); // 构建并返回Trigger实例  }  
}

步骤 5: 启动应用

启动 Spring Boot 应用程序,Quartz 调度器会自动启动,并按照配置的调度策略执行任务。

三、持久化配置

  1. 在 application.properties 文件中加入 Quartz 相关配置。
# 将 Quartz 持久化方式修改为 jdbc
spring.quartz.job-store-type=jdbc
# 实例名称(默认为quartzScheduler)
spring.quartz.properties.org.quartz.scheduler.instanceName=SC_Scheduler
# 实例节点 ID 自动生成
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
# 修改存储内容使用的类
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
# 数据源信息
spring.quartz.properties.org.quartz.jobStore.dataSource=quartz_jobs
spring.quartz.properties.org.quartz.dataSource.quartz_jobs.driver=com.mysql.cj.jdbc.Driver
spring.quartz.properties.org.quartz.dataSource.quartz_jobs.URL=jdbc:mysql://127.0.0.1:3306/quartz_jobs?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
spring.quartz.properties.org.quartz.dataSource.quartz_jobs.user=root
spring.quartz.properties.org.quartz.dataSource.quartz_jobs.password=123456
  1. 初始化 Quartz 数据表信息

下载 Quartz 发布包,下载完成后,解压缩进入 quartz-2.2.3/docs/dbTables 目录,找到匹配数据库的 SQL 文件

下载地址:
https://www.quartz-scheduler.org/downloads/files/quartz-2.2.3-distribution.tar.gz

然后在数据库中执行 tables-mysql.sql 初始化脚本。

四、总结

通过以上步骤,可以在 Spring Boot 应用中成功集成并使用 Quartz 来进行任务调度。Quartz 的强大之处在于其灵活性和可扩展性,能够满足各种复杂的任务调度需求。在实际应用中,可以根据具体需求配置更多的 Quartz 特性,如持久化、集群等。

  • 在生产环境中,需要配置 Quartz 的持久化选项,以便在应用程序重启后仍然可以恢复调度任务的状态。
  • 可以使用 @Autowired 将 Scheduler 注入到你的服务或组件中,以动态地添加、删除或更新作业和触发器。
  • Quartz 还提供了很多其他的功能和选项,如监听器、插件、作业恢复等
http://www.hkea.cn/news/150081/

相关文章:

  • 百草味网站建设的活动方案营销型企业网站有哪些
  • 论文课程网站 建设背景项目推广方式有哪些
  • 内部网站建设关键词优化推广策略
  • 一个公司可以做几个网站备案贵阳网络推广排名
  • 武汉高端网站建设免费广告网
  • 大理建网站常用于网站推广的营销手段是
  • js怎么做网站跨境电商网站
  • 台州外贸网站建设百度推广费用多少
  • 虚拟机怎么做网站空间培训班管理系统 免费
  • wordpress离线文章发布郑州seo关键词排名优化
  • 龙岗区网站建设中国职业培训在线
  • 南山网站建设外包优化网站
  • 个人怎么做网站推广神起网络游戏推广平台
  • 做网站的关键技术运营推广的方式和渠道有哪些
  • jsp做就业网站网推项目
  • 网站开发的目的和意义重庆seo排名电话
  • 顺义专业建站公司最有效的线上推广方式
  • 大连网站网站搭建制作百度识图 上传图片
  • 给人做网站多少钱黑科技引流推广神器怎么下载
  • 沈阳做网站最好的公司百度快照怎么删除
  • 设置本机外网ip做网站网站免费制作平台
  • 有什么推荐做简历的网站2024的新闻有哪些
  • 申请做网站 论坛版主惠州seo外包服务
  • 网站照片上传不了域名解析ip
  • 胖小七网站建设2022最新国际新闻10条简短
  • wordpress 网站备份厦门seo外包服务
  • 网站建设及推广培训杭州百度快照优化排名
  • 简单手机网站开发软件关键词排名代发
  • visio画网站开发类图注册域名后怎么建网站
  • 道里网站运营培训北京网络营销咨询公司