依赖
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
</ dependency>
< dependency>
< groupId> com.alibaba</ groupId>
< artifactId> druid</ artifactId>
< version> 1.2.16</ version>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-starter-quartz</ artifactId>
</ dependency>
配置文件
spring :
datasource :
type : com.alibaba.druid.pool.DruidDataSource
druid :
test-while-idle : false
username : root
password : root
url : jdbc: mysql: ///quartz? serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true
driver-class-name : com.mysql.jdbc.Driver
quartz :
job-store-type : jdbc
properties :
org :
quartz :
scheduler :
instanceName : clusteredScheduler
instanceId : AUTO
jobStore :
class : org.springframework.scheduling.quartz.LocalDataSourceJobStore
driverDelegateClass : org.quartz.impl.jdbcjobstore.StdJDBCDelegate
tablePrefix : QRTZ_
isClustered : true
clusterCheckinInterval : 10000
useProperties : false
threadPool :
class : org.quartz.simpl.SimpleThreadPool
threadCount : 10
threadPriority : 5
threadsInheritContextClassLoaderOfInitializingThread : true
SQL
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0 ;
DROP TABLE IF EXISTS ` QRTZ_BLOB_TRIGGERS` ;
CREATE TABLE ` QRTZ_BLOB_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` BLOB_DATA` blob NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) USING BTREE ,
INDEX ` SCHED_NAME` ( ` SCHED_NAME` ASC , ` TRIGGER_NAME` ASC , ` TRIGGER_GROUP` ASC ) USING BTREE ,
CONSTRAINT ` QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) REFERENCES ` QRTZ_TRIGGERS` ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_CALENDARS` ;
CREATE TABLE ` QRTZ_CALENDARS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` CALENDAR_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` CALENDAR` blob NOT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` CALENDAR_NAME` ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_CRON_TRIGGERS` ;
CREATE TABLE ` QRTZ_CRON_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` CRON_EXPRESSION` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TIME_ZONE_ID` varchar ( 80 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) USING BTREE ,
CONSTRAINT ` QRTZ_CRON_TRIGGERS_ibfk_1` FOREIGN KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) REFERENCES ` QRTZ_TRIGGERS` ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_FIRED_TRIGGERS` ;
CREATE TABLE ` QRTZ_FIRED_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` ENTRY_ID` varchar ( 95 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` INSTANCE_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` FIRED_TIME` bigint NOT NULL ,
` SCHED_TIME` bigint NOT NULL ,
` PRIORITY` int NOT NULL ,
` STATE` varchar ( 16 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` JOB_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` IS_NONCONCURRENT` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` REQUESTS_RECOVERY` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` ENTRY_ID` ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_TRIG_INST_NAME` ( ` SCHED_NAME` ASC , ` INSTANCE_NAME` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` ( ` SCHED_NAME` ASC , ` INSTANCE_NAME` ASC , ` REQUESTS_RECOVERY` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_J_G` ( ` SCHED_NAME` ASC , ` JOB_NAME` ASC , ` JOB_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_JG` ( ` SCHED_NAME` ASC , ` JOB_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_T_G` ( ` SCHED_NAME` ASC , ` TRIGGER_NAME` ASC , ` TRIGGER_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_FT_TG` ( ` SCHED_NAME` ASC , ` TRIGGER_GROUP` ASC ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_JOB_DETAILS` ;
CREATE TABLE ` QRTZ_JOB_DETAILS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` DESCRIPTION` varchar ( 250 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` JOB_CLASS_NAME` varchar ( 250 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` IS_DURABLE` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` IS_NONCONCURRENT` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` IS_UPDATE_DATA` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` REQUESTS_RECOVERY` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_DATA` blob NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` JOB_NAME` , ` JOB_GROUP` ) USING BTREE ,
INDEX ` IDX_QRTZ_J_REQ_RECOVERY` ( ` SCHED_NAME` ASC , ` REQUESTS_RECOVERY` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_J_GRP` ( ` SCHED_NAME` ASC , ` JOB_GROUP` ASC ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_LOCKS` ;
CREATE TABLE ` QRTZ_LOCKS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` LOCK_NAME` varchar ( 40 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` LOCK_NAME` ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_PAUSED_TRIGGER_GRPS` ;
CREATE TABLE ` QRTZ_PAUSED_TRIGGER_GRPS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_GROUP` ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_SCHEDULER_STATE` ;
CREATE TABLE ` QRTZ_SCHEDULER_STATE` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` INSTANCE_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` LAST_CHECKIN_TIME` bigint NOT NULL ,
` CHECKIN_INTERVAL` bigint NOT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` INSTANCE_NAME` ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_SIMPLE_TRIGGERS` ;
CREATE TABLE ` QRTZ_SIMPLE_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` REPEAT_COUNT` bigint NOT NULL ,
` REPEAT_INTERVAL` bigint NOT NULL ,
` TIMES_TRIGGERED` bigint NOT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) USING BTREE ,
CONSTRAINT ` QRTZ_SIMPLE_TRIGGERS_ibfk_1` FOREIGN KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) REFERENCES ` QRTZ_TRIGGERS` ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_SIMPROP_TRIGGERS` ;
CREATE TABLE ` QRTZ_SIMPROP_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` STR_PROP_1` varchar ( 512 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` STR_PROP_2` varchar ( 512 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` STR_PROP_3` varchar ( 512 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` INT_PROP_1` int NULL DEFAULT NULL ,
` INT_PROP_2` int NULL DEFAULT NULL ,
` LONG_PROP_1` bigint NULL DEFAULT NULL ,
` LONG_PROP_2` bigint NULL DEFAULT NULL ,
` DEC_PROP_1` decimal ( 13 , 4 ) NULL DEFAULT NULL ,
` DEC_PROP_2` decimal ( 13 , 4 ) NULL DEFAULT NULL ,
` BOOL_PROP_1` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` BOOL_PROP_2` varchar ( 1 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) USING BTREE ,
CONSTRAINT ` QRTZ_SIMPROP_TRIGGERS_ibfk_1` FOREIGN KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) REFERENCES ` QRTZ_TRIGGERS` ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
DROP TABLE IF EXISTS ` QRTZ_TRIGGERS` ;
CREATE TABLE ` QRTZ_TRIGGERS` (
` SCHED_NAME` varchar ( 120 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` JOB_GROUP` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` DESCRIPTION` varchar ( 250 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` NEXT_FIRE_TIME` bigint NULL DEFAULT NULL ,
` PREV_FIRE_TIME` bigint NULL DEFAULT NULL ,
` PRIORITY` int NULL DEFAULT NULL ,
` TRIGGER_STATE` varchar ( 16 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` TRIGGER_TYPE` varchar ( 8 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NOT NULL ,
` START_TIME` bigint NOT NULL ,
` END_TIME` bigint NULL DEFAULT NULL ,
` CALENDAR_NAME` varchar ( 190 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_cs_0900_ai_ci NULL DEFAULT NULL ,
` MISFIRE_INSTR` smallint NULL DEFAULT NULL ,
` JOB_DATA` blob NULL ,
PRIMARY KEY ( ` SCHED_NAME` , ` TRIGGER_NAME` , ` TRIGGER_GROUP` ) USING BTREE ,
INDEX ` IDX_QRTZ_T_J` ( ` SCHED_NAME` ASC , ` JOB_NAME` ASC , ` JOB_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_JG` ( ` SCHED_NAME` ASC , ` JOB_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_C` ( ` SCHED_NAME` ASC , ` CALENDAR_NAME` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_G` ( ` SCHED_NAME` ASC , ` TRIGGER_GROUP` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_STATE` ( ` SCHED_NAME` ASC , ` TRIGGER_STATE` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_N_STATE` ( ` SCHED_NAME` ASC , ` TRIGGER_NAME` ASC , ` TRIGGER_GROUP` ASC , ` TRIGGER_STATE` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_N_G_STATE` ( ` SCHED_NAME` ASC , ` TRIGGER_GROUP` ASC , ` TRIGGER_STATE` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_NEXT_FIRE_TIME` ( ` SCHED_NAME` ASC , ` NEXT_FIRE_TIME` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_NFT_ST` ( ` SCHED_NAME` ASC , ` TRIGGER_STATE` ASC , ` NEXT_FIRE_TIME` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_NFT_MISFIRE` ( ` SCHED_NAME` ASC , ` MISFIRE_INSTR` ASC , ` NEXT_FIRE_TIME` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_NFT_ST_MISFIRE` ( ` SCHED_NAME` ASC , ` MISFIRE_INSTR` ASC , ` NEXT_FIRE_TIME` ASC , ` TRIGGER_STATE` ASC ) USING BTREE ,
INDEX ` IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` ( ` SCHED_NAME` ASC , ` MISFIRE_INSTR` ASC , ` NEXT_FIRE_TIME` ASC , ` TRIGGER_GROUP` ASC , ` TRIGGER_STATE` ASC ) USING BTREE ,
CONSTRAINT ` QRTZ_TRIGGERS_ibfk_1` FOREIGN KEY ( ` SCHED_NAME` , ` JOB_NAME` , ` JOB_GROUP` ) REFERENCES ` QRTZ_JOB_DETAILS` ( ` SCHED_NAME` , ` JOB_NAME` , ` JOB_GROUP` ) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_cs_0900_ai_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1 ;
Service
import org. quartz. * ;
@Service
@Slf4j
public class DemoSchedulerServiceImpl implements DemoSchedulerService {
@Resource
Scheduler scheduler;
@Override
public Boolean demoScheduler ( DemoSchedulerDTO demoSchedulerDTO) {
Boolean flag = Boolean . FALSE;
Integer id = demoSchedulerDTO. getId ( ) ;
DemoSchedulerEnum demoSchedulerEnum = demoSchedulerDTO. getdemoSchedulerEnum ( ) ;
log. info ( "接收到一个定时任务请求,参数是:{}" , demoSchedulerDTO) ;
switch ( Objects . requireNonNull ( demoSchedulerEnum) ) {
case CREATE :
return createDemoScheduler ( demoSchedulerDTO) ;
case STOP:
return stopDemoScheduler ( demoSchedulerDTO) ;
case RECOVER:
return recoverDemoScheduler ( demoSchedulerDTO) ;
case DELETE:
return deleteDemoScheduler ( demoSchedulerDTO) ;
default : break ;
}
return flag;
}
Boolean createdemoScheduler ( DemoSchedulerDTO demoSchedulerDTO) {
String triggerName = demoSchedulerDTO. getType ( ) . getDesc ( ) + demoSchedulerDTO. getId ( ) . toString ( ) ;
String jobDetailName = "job:" + demoSchedulerDTO. getType ( ) . getDesc ( ) + demoSchedulerDTO. getId ( ) . toString ( ) ;
Trigger trigger = TriggerBuilder . newTrigger ( )
. withIdentity ( triggerName , "dealDemo" )
. startAt ( new Date ( System . currentTimeMillis ( ) + 30 * 1000 * 60 ) )
. withSchedule (
SimpleScheduleBuilder . simpleSchedule ( ) . withMisfireHandlingInstructionFireNow ( )
)
. build ( ) ;
JobDetail jobDetail = JobBuilder . newJob ( DemoSchedulerJob . class )
. withIdentity ( jobDetailName, "dealDemo" )
. usingJobData ( "id" , demoSchedulerDTO. getId ( ) )
. usingJobData ( "type" , demoSchedulerDTO. getType ( ) . getType ( ) )
. build ( ) ;
try {
scheduler. scheduleJob ( jobDetail, trigger) ;
if ( ! scheduler. isShutdown ( ) ) {
scheduler. start ( ) ;
return Boolean . TRUE;
}
} catch ( SchedulerException e) {
throw new CustomException ( e. getMessage ( ) ) ;
}
return Boolean . TRUE;
}
Boolean stopdemoScheduler ( DemoSchedulerDTO demoSchedulerDTO) {
try {
scheduler. pauseTrigger ( TriggerKey . triggerKey ( demoSchedulerDTO. getType ( ) . getDesc ( ) +
demoSchedulerDTO. getId ( ) . toString ( ) ) ) ;
} catch ( SchedulerException e) {
throw new CustomException ( e. getMessage ( ) ) ;
}
return Boolean . TRUE;
}
Boolean recoverdemoScheduler ( DemoSchedulerDTO demoSchedulerDTO) {
try {
scheduler. resumeTrigger ( TriggerKey . triggerKey ( demoSchedulerDTO. getType ( ) . getDesc ( ) +
demoSchedulerDTO. getId ( ) . toString ( ) ) ) ;
} catch ( SchedulerException e) {
throw new CustomException ( e. getMessage ( ) ) ;
}
return Boolean . TRUE;
}
Boolean deletedemoScheduler ( DemoSchedulerDTO demoSchedulerDTO) {
try {
scheduler. pauseTrigger ( TriggerKey . triggerKey ( demoSchedulerDTO. getType ( ) . getDesc ( ) +
demoSchedulerDTO. getId ( ) . toString ( ) ) ) ;
scheduler. unscheduleJob ( TriggerKey . triggerKey ( demoSchedulerDTO. getType ( ) . getDesc ( ) +
demoSchedulerDTO. getId ( ) . toString ( ) ) ) ;
scheduler. deleteJob ( JobKey . jobKey ( demoSchedulerDTO. getType ( ) . getDesc ( ) +
demoSchedulerDTO. getId ( ) . toString ( ) ) ) ;
} catch ( SchedulerException e) {
throw new CustomException ( e. getMessage ( ) ) ;
}
return Boolean . TRUE;
}
}
job任务
import org. quartz. Job ;
import org. quartz. JobExecutionContext ;
import org. quartz. JobExecutionException ;
@Slf4j
public class demoSchedulerJob implements Job {
private demoSchedulerJobService demoSchedulerJobService = AppCtxUtils . getBean ( DemoSchedulerJobServiceImpl . class ) ;
@Override
public void execute ( JobExecutionContext jobExecutionContext) {
Integer id = ( Integer ) jobExecutionContext. getJobDetail ( ) . getJobDataMap ( ) . get ( "id" ) ;
Integer type = ( Integer ) jobExecutionContext. getJobDetail ( ) . getJobDataMap ( ) . get ( "type" ) ;
DemoTypeEnum demoTypeEnum = DemoTypeEnum . getDemoTypeEnumByType ( type) ;
Boolean flag = Boolean . FALSE;
switch ( Objects . requireNonNull ( demoTypeEnum) ) {
case INDIVIDUAL :
flag = demoSchedulerJobService. dealeCustomerDemo ( id) ;
break ;
case ENTERPRISE:
flag = demoSchedulerJobService. dealCompanyDemo ( id) ;
break ;
default :
break ;
}
if ( Boolean . FALSE. equals ( flag) ) {
log. error ( "合同id为{},合同类型为{}修改失败" , id, DemoTypeEnum . getDesc ( ) ) ;
}
}
}
工具类
import org. springframework. beans. BeansException ;
import org. springframework. context. ApplicationContext ;
import org. springframework. context. ApplicationContextAware ;
import org. springframework. stereotype. Component ;
@Component
public class AppCtxUtils implements ApplicationContextAware {
private static ApplicationContext appCtx;
@Override
public void setApplicationContext ( ApplicationContext applicationContext) throws BeansException {
appCtx = applicationContext;
}
public static < T > T getBean ( Class < T > clazz) {
return appCtx. getBean ( clazz) ;
}
public static < T > T getBean ( String beanName) {
return ( T ) appCtx. getBean ( beanName) ;
}
}