quartz数据库方式配置

项目中一般都会用到定时任务,spring在定时任务这块有很好的封装,早起版本,quartz的jar是独立出来的,现在spring将quartz的jar包集成了进去,springBoot也只需引入spring-boot-starter-quartz就ok了,非常简便,但也不得不服源代码开发大牛,我们想要知道底层,得自己去研究了。下面就通过代码简单说明quartz数据库方式。

<!-- 以数据库存储的方式来QUARTZ调度 -->
	<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
        <!--quartz的配置文件,会过properties读取配置,配置内容诸如corn表达式等等-->
		<property name="configLocation" value="classpath:META-INF/conf/quartz.properties"/>
		<!--QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动  value:延时启动时间-->
		<property name="startupDelay" value="20"/>
		<!-- QuartzScheduler 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 -->
		<property name="overwriteExistingJobs" value="true"/>
		<property name="triggers">
			<list>
                <!--可配置多个-->
				<ref bean="XXXXTrigger" />
	
			</list>
		</property>
	</bean>
    <!--配置job-->
    <bean id="XXXXJob"             class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <!--jobClass 需要继承ScanMsgTaskJob ,该类需要引入spring-contex-support.jar-->
		<property name="jobClass" value="com.XXX.xxx"></property>
		<property name="durability" value="true"></property>
	</bean>
    <!--配置触发器-->
    <bean id="XXXXTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="XXXXJob"></property>
        <!--corn 表达式,自己可以百度搜写法,不难,规则是定好的-->
        <!--秒 分 时 天 年-->
		<property name="cronExpression" value="0 0 2 * * ?"></property>
	</bean>

所有配置完成后,启动项目数据库会自动生成很多quartz表:

每个表的意思,本人百度了https://blog.csdn.net/tengdazhang770960436/article/details/51019291

解释如下:

1.1.qrtz_blob_triggers : 以Blob 类型存储的触发器。 
1.2.qrtz_calendars:存放日历信息, quartz可配置一个日历来指定一个时间范围。 
1.3.qrtz_cron_triggers:存放cron类型的触发器。 
1.4.qrtz_fired_triggers:存放已触发的触发器。 
1.5.qrtz_job_details:存放一个jobDetail信息。 
1.6.qrtz_job_listeners:job**监听器**。 
1.7.qrtz_locks: 存储程序的悲观锁的信息(假如使用了悲观锁)。 
1.8.qrtz_paused_trigger_graps:存放暂停掉的触发器。 
1.9.qrtz_scheduler_state:调度器状态。 
1.10.qrtz_simple_triggers:简单触发器的信息。 
1.11.qrtz_trigger_listeners:触发器监听器。 
1.12.qrtz_triggers:触发器的基本信息。

其中qrtz_cron_triggers、qrtz_job_details、qrtz_triggers这几个表在项目启动后会填充数据;qrtz_cron_triggers会记录配置的完整tragger信息,包括corn表达式;qrtz_job_details保存了所有的job信息,以及该job位于工程的包路径;qrtz_triggers记录了所有触发器的信息,包括下次执行时间、执行优先级等等。

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于Quartz数据库配置,你需要执行以下步骤: 1. 确保已经创建了一个用于存储Quartz调度表的数据库。你可以使用例如MySQL或PostgreSQL等关系型数据库。 2. 在你的项目中添加Quartz的相关依赖。你可以通过Maven或Gradle等构建工具来添加依赖。例如,如果你使用Maven,可以在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> ``` 3. 在你的项目中创建一个Quartz配置文件。你可以创建一个名为`quartz.properties`的文件,并将其放置在类路径下。在该配置文件中,你需要指定使用的数据库类型、连接信息以及其他相关的配置项。以下是一个示例配置文件: ```properties # 数据库类型 org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore.dataSource = myDS # 数据库连接信息 org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz org.quartz.dataSource.myDS.user = root org.quartz.dataSource.myDS.password = password # 其他配置项... ``` 请根据你使用的数据库类型和实际情况修改上述配置。 4. 在你的代码中加载Quartz配置。在应用程序启动时,你需要加载上述的Quartz配置文件。以下是一个示例的Java代码: ```java import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.impl.StdSchedulerFactory; public class QuartzExample { public static void main(String[] args) { try { // 加载Quartz配置 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); // 启动调度器 scheduler.start(); // 其他操作... // 关闭调度器 scheduler.shutdown(); } catch (SchedulerException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们使用`StdSchedulerFactory`类来加载Quartz配置并创建调度器实例。然后,你可以根据需要进行其他操作,最后记得关闭调度器。 这就是Quartz数据库配置的基本步骤。根据你的实际需求,你可能还需要了解更多关于Quartz的使用方法和其他配置项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值