quartz 2.3.2
时间: 2023-05-15 18:03:24 浏览: 105
quartz 2.3.2是一个开源的调度框架,它允许开发者实现基于时间策略的任务调度和管理,包括定时执行任务、周期性执行任务等。它提供了非常灵活的配置选项,使得开发者可以根据自己的需求制定不同的任务调度规则,从而提高程序的效率和可靠性。
quartz 2.3.2在性能上有很大的提升,它支持集群部署,保证任务的高可用性和负载均衡。同时,它还提供了许多可扩展的插件,例如邮件通知、JDBC日志等,方便开发者进行扩展和二次开发。
总的来说,quartz 2.3.2是一个非常强大、可靠的任务调度框架,适用于各种类型的应用程序开发。它的使用可以极大地提高程序的可靠性和工作效率,为开发者提供了一种高度定制化的任务调度方案。
相关问题
使用Quartz2.3.2+spring boot实现数据库持久化存储多个定时任务
好的,我了解了你的问题。要使用Quartz2.3.2和Spring Boot实现数据库持久化存储多个定时任务,你可以按照以下步骤操作:
1. 在Spring Boot项目中添加Quartz2.3.2的依赖包:
```xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
```
2. 创建一个继承了`org.quartz.impl.jdbcjobstore.PostgreSQLDelegate`的类,用于实现PostgreSQL数据库的存储。
```java
public class PostgreSQLDelegateCustom extends PostgreSQLDelegate {
private String tablePrefix = "";
public PostgreSQLDelegateCustom() {
super();
}
@Override
public void setInstanceName(String schedName) {
super.setInstanceName(schedName);
this.tablePrefix = schedName + ".";
}
@Override
public String getSelectNextTriggerToAcquireSql(int maxCount) {
return "SELECT * FROM " + tablePrefix + "QRTZ_TRIGGERS WHERE " + "TRIGGER_STATE = ? AND NEXT_FIRE_TIME <= ? " + "AND MISFIRE_INSTR IN (" + MisfireInstruction.IGNORE_MISFIRE_POLICY + "," + MisfireInstruction.SMART_POLICY + ") ORDER BY NEXT_FIRE_TIME ASC";
}
@Override
public String getSelectNextMisfiredTriggersInStateSql(Connection conn, String state, long ts) {
return "SELECT * FROM " + tablePrefix + "QRTZ_TRIGGERS WHERE " + "TRIGGER_STATE = ? AND NEXT_FIRE_TIME <= ? " + "AND MISFIRE_INSTR NOT IN (" + MisfireInstruction.IGNORE_MISFIRE_POLICY + "," + MisfireInstruction.SMART_POLICY + ") ORDER BY NEXT_FIRE_TIME ASC";
}
@Override
public String getSelectPausedTriggerGroupsSql() {
return "SELECT TRIGGER_GROUP FROM " + tablePrefix + "QRTZ_PAUSED_TRIGGER_GRPS";
}
@Override
public String getSelectPausedTriggerGroupsLikeSql() {
return "SELECT TRIGGER_GROUP FROM " + tablePrefix + "QRTZ_PAUSED_TRIGGER_GRPS WHERE TRIGGER_GROUP LIKE ?";
}
@Override
public String getSelectFiredTriggersSql(int limit) {
return "SELECT * FROM " + tablePrefix + "QRTZ_FIRED_TRIGGERS ORDER BY FIRE_TIME ASC LIMIT " + limit;
}
@Override
public String getSelectFiredTriggerSql() {
return "SELECT * FROM " + tablePrefix + "QRTZ_FIRED_TRIGGERS WHERE ENTRY_ID = ?";
}
@Override
public String getInsertPausedTriggerGroupSql() {
return "INSERT INTO " + tablePrefix + "QRTZ_PAUSED_TRIGGER_GRPS (TRIGGER_GROUP) VALUES (?)";
}
@Override
public String getDeletePausedTriggerGroupSql() {
return "DELETE FROM " + tablePrefix + "QRTZ_PAUSED_TRIGGER_GRPS WHERE TRIGGER_GROUP = ?";
}
@Override
public String getDeleteAllPausedTriggerGroupsSql() {
return "DELETE FROM " + tablePrefix + "QRTZ_PAUSED_TRIGGER_GRPS";
}
@Override
public String getInsertFiredTriggerSql() {
return "INSERT INTO " + tablePrefix + "QRTZ_FIRED_TRIGGERS (ENTRY_ID, " + "TRIGGER_NAME, TRIGGER_GROUP, " + "IS_VOLATILE, INSTANCE_NAME, " + "FIRED_TIME, SCHED_TIME, " + "PRIORITY, STATE, JOB_NAME, " + "JOB_GROUP, IS_STATEFUL, " + "REQUESTS_RECOVERY, " + "MISFIRE_INSTR) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
}
@Override
public String getUpdateFiredTriggerSql() {
return "UPDATE " + tablePrefix + "QRTZ_FIRED_TRIGGERS SET " + "FIRED_TIME = ?, SCHED_TIME = ?, STATE = ? " + "WHERE ENTRY_ID = ?";
}
@Override
public String getDeleteFiredTriggerSql() {
return "DELETE FROM " + tablePrefix + "QRTZ_FIRED_TRIGGERS WHERE ENTRY_ID = ?";
}
@Override
public String getDeleteFiredTriggersSql(String instanceId) {
return "DELETE FROM " + tablePrefix + "QRTZ_FIRED_TRIGGERS WHERE INSTANCE_NAME = ?";
}
@Override
public String getSelectInstancesFiredTriggerCountSql() {
return "SELECT COUNT(*) FROM " + tablePrefix + "QRTZ_FIRED_TRIGGERS WHERE INSTANCE_NAME = ?";
}
}
```
3. 在Spring Boot配置文件中配置Quartz的相关参数:
```yaml
spring:
quartz:
job-store-type: jdbc
properties:
org:
quartz:
scheduler:
instanceId: AUTO
instanceName: my-scheduler
jobStore:
driverDelegateClass: com.example.PostgreSQLDelegateCustom
useProperties: false
isClustered: false
dataSource: myDataSource
tablePrefix: QRTZ_
threadPool:
threadCount: 10
plugin:
shutdownhook:
class: org.quartz.plugins.management.ShutdownHookPlugin
cleanShutdown: true
jobHistory:
class: org.quartz.plugins.history.LoggingJobHistoryPlugin
jobHistoryLogLevel: INFO
```
4. 创建一个继承了`org.quartz.Job`的类,用于定义任务的具体逻辑:
```java
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 任务逻辑代码
}
}
```
5. 在Spring Boot的任意一个类中添加以下代码,用于配置和启动Quartz Scheduler:
```java
@Configuration
public class QuartzConfig {
@Bean
public JobDetail myJobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger myTrigger() {
return TriggerBuilder.newTrigger()
.forJob(myJobDetail())
.withIdentity("myTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setDataSource(dataSource);
schedulerFactoryBean.setJobDetails(myJobDetail());
schedulerFactoryBean.setTriggers(myTrigger());
return schedulerFactoryBean;
}
}
```
6. 最后,你需要在PostgreSQL数据库中创建Quartz所需的表结构。你可以使用Quartz提供的`tables_postgres.sql`文件进行创建。
至此,你已经成功实现了使用Quartz2.3.2和Spring Boot实现数据库持久化存储多个定时任务。
org.quartz-scheduler:quartz:2.3.2
org.quartz-scheduler:quartz:2.3.2是一个Maven坐标,用于引入Quartz任务调度框架的相关依赖。你可以在你的项目中的pom.xml文件中添加如下依赖来引入Quartz 2.3.2版本:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
这个坐标代表了Quartz框架的版本号为2.3.2,可以通过Maven自动下载相关的jar包。
如果你想查看在你的项目中使用了org.quartz-scheduler:quartz:2.3.2版本后的依赖树,你可以使用命令"mvn dependency:tree"来查看。这个命令会列出项目的所有依赖关系,包括间接依赖。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [org.quartz](https://blog.csdn.net/qq_40144701/article/details/112540359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [quartz-2.3.2-API文档-中文版.zip](https://download.csdn.net/download/qq_36462452/85549591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [因为org.quartz-scheduler-quartz定时任务引入版本过高导致项目启动报错问题](https://blog.csdn.net/chengzhan9657/article/details/100839563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]