Browse Source

定时任务配置细化

master
xyiege 4 years ago
parent
commit
d5824d0ec9
  1. 4
      README.md
  2. 6
      src/main/java/cn/chjyj/szwh/job/HelloJob.java
  3. 20
      src/main/java/cn/chjyj/szwh/job/SzwhJob.java
  4. 7
      src/main/resources/application.properties
  5. 47
      src/main/resources/mapper/szwh/JobDetailMapper.xml
  6. 18
      src/main/resources/mapper/szwh/TriggerMapper.xml
  7. 62
      src/test/java/cn/chjyj/szwh/mapper/JobDetailMapperTest.java

4
README.md

@ -55,4 +55,6 @@ eyJhbGciOiJIUzUxMiJ9.eyJhdWQiOiJCRDg0REQ0MkE3MjM0QjA1QjBDNUQxMTYxNjEzMkFDNCIsImp
16、[SpringBoot整合Quartz](https://blog.csdn.net/weixin_38192427/article/details/121111677)
17、[Springboot整合Quartz实现动态定时任务](https://segmentfault.com/a/1190000016554033)
17、[Springboot整合Quartz实现动态定时任务](https://segmentfault.com/a/1190000016554033)
18、[Quartz定时任务2.3版本数据库表字段说明](https://blog.csdn.net/qq_30859353/article/details/120533838)

6
src/main/java/cn/chjyj/szwh/job/HelloJob.java

@ -10,6 +10,8 @@ import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.SimpleDateFormat;
/**
*@Author: CJ
*@Date: 2021-11-2 11:33
@ -24,6 +26,8 @@ public class HelloJob implements Job {
//QuartzService quartzService = (QuartzService) SpringUtil.getBean("quartzServiceImpl");
PageInfo<JobAndTriggerDto> jobAndTriggerDetails = quartzService.getJobAndTriggerDetails(1, 10);
log.info("任务列表总数为:" + jobAndTriggerDetails.getTotal());
log.info("Hello Job执行时间: " + System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String tss =sdf.format(System.currentTimeMillis());
log.info("Hello Job执行时间: " + tss);
}
}

20
src/main/java/cn/chjyj/szwh/job/SzwhJob.java

@ -0,0 +1,20 @@
package cn.chjyj.szwh.job;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SzwhJob implements Job {
private static Log log = LogFactory.getLog(SzwhJob.class);
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//
JobDataMap data = jobExecutionContext.getTrigger().getJobDataMap();
String invokeParam = (String) data.get("invokeParam");
//在这里实现业务逻辑
log.info("自定义任务 szwhjob");
}
}

7
src/main/resources/application.properties

@ -24,4 +24,9 @@ spring.redis.jedis.pool.max-wait=-1
# 是否等待任务执行完毕后,容器才会关闭
#spring.quartz.wait-for-jobs-to-complete-on-shutdown=true
# 容器名称
#spring.quartz.scheduler-name=SzwhScheduler
spring.quartz.scheduler-name=SzwhScheduler
#
org.quartz.simpl.SimpleThreadPool=10
#
#org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

47
src/main/resources/mapper/szwh/JobDetailMapper.xml

@ -16,30 +16,32 @@
<result column="JOB_DATA" jdbcType="LONGVARBINARY" property="jobData"/>
</resultMap>
<sql id="Base_Column_List">
SCHED_NAME
, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT,
IS_UPDATE_DATA, REQUESTS_RECOVERY
SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE,
IS_NONCONCURRENT,IS_UPDATE_DATA, REQUESTS_RECOVERY
</sql>
<sql id="Blob_Column_List">
JOB_DATA
</sql>
<sql id="tbname">QRTZ_JOB_DETAILS</sql>
<select id="getJobAndTriggerDetails" resultType="cn.chjyj.szwh.bean.JobDetail">
SELECT DISTINCT
qrtz_job_details.JOB_NAME,
qrtz_job_details.JOB_GROUP,
qrtz_job_details.JOB_CLASS_NAME,
qrtz_triggers.TRIGGER_NAME,
qrtz_triggers.TRIGGER_GROUP,
qrtz_cron_triggers.CRON_EXPRESSION,
qrtz_cron_triggers.TIME_ZONE_ID
QRTZ_JOB_DETAILS.JOB_NAME,
QRTZ_JOB_DETAILS.JOB_GROUP,
QRTZ_JOB_DETAILS.JOB_CLASS_NAME,
QRTZ_TRIGGERS.TRIGGER_NAME,
QRTZ_TRIGGERS.TRIGGER_GROUP,
QRTZ_CRON_TRIGGERS.CRON_EXPRESSION,
QRTZ_CRON_TRIGGERS.TIME_ZONE_ID
FROM
qrtz_job_details
LEFT JOIN qrtz_triggers ON qrtz_triggers.TRIGGER_GROUP = qrtz_job_details.JOB_GROUP
LEFT JOIN qrtz_cron_triggers ON qrtz_job_details.JOB_NAME = qrtz_triggers.JOB_NAME
QRTZ_JOB_DETAILS
LEFT JOIN QRTZ_TRIGGERS ON QRTZ_TRIGGERS.TRIGGER_GROUP = QRTZ_JOB_DETAILS.JOB_GROUP
LEFT JOIN QRTZ_CRON_TRIGGERS ON QRTZ_JOB_DETAILS.JOB_NAME = QRTZ_TRIGGERS.JOB_NAME
WHERE
qrtz_triggers.TRIGGER_NAME = qrtz_cron_triggers.TRIGGER_NAME
AND qrtz_triggers.TRIGGER_GROUP = qrtz_cron_triggers.TRIGGER_GROUP
QRTZ_TRIGGERS.TRIGGER_NAME = QRTZ_CRON_TRIGGERS.TRIGGER_NAME
AND QRTZ_TRIGGERS.TRIGGER_GROUP = QRTZ_CRON_TRIGGERS.TRIGGER_GROUP
</select>
<select id="selectByPrimaryKey" parameterType="cn.chjyj.szwh.bean.JobDetailKey" resultMap="ResultMapWithBLOBs">
@ -47,7 +49,7 @@
<include refid="Base_Column_List"/>
,
<include refid="Blob_Column_List"/>
from qrtz_job_details
from QRTZ_JOB_DETAILS
where SCHED_NAME = #{schedName,jdbcType=VARCHAR}
and JOB_NAME = #{jobName,jdbcType=VARCHAR}
and JOB_GROUP = #{jobGroup,jdbcType=VARCHAR}
@ -55,14 +57,14 @@
<delete id="deleteByPrimaryKey" parameterType="cn.chjyj.szwh.bean.JobDetailKey">
delete
from qrtz_job_details
from QRTZ_JOB_DETAILS
where SCHED_NAME = #{schedName,jdbcType=VARCHAR}
and JOB_NAME = #{jobName,jdbcType=VARCHAR}
and JOB_GROUP = #{jobGroup,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="cn.chjyj.szwh.bean.JobDetail">
insert into qrtz_job_details (SCHED_NAME, JOB_NAME, JOB_GROUP,
insert into QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP,
DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE,
IS_NONCONCURRENT,
IS_UPDATE_DATA,
@ -79,7 +81,7 @@
</insert>
<insert id="insertSelective" parameterType="cn.chjyj.szwh.bean.JobDetail">
insert into qrtz_job_details
insert into QRTZ_JOB_DETAILS
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="schedName != null">
SCHED_NAME,
@ -145,8 +147,9 @@
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cn.chjyj.szwh.bean.JobDetail">
update qrtz_job_details
update QRTZ_JOB_DETAILS
<set>
<if test="description != null">
DESCRIPTION = #{description,jdbcType=VARCHAR},
@ -176,7 +179,7 @@
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="cn.chjyj.szwh.bean.JobDetail">
update qrtz_job_details
update QRTZ_JOB_DETAILS
set DESCRIPTION = #{description,jdbcType=VARCHAR},
JOB_CLASS_NAME = #{jobClassName,jdbcType=VARCHAR},
IS_DURABLE = #{isDurable,jdbcType=VARCHAR},
@ -190,7 +193,7 @@
</update>
<update id="updateByPrimaryKey" parameterType="cn.chjyj.szwh.bean.JobDetail">
update qrtz_job_details
update QRTZ_JOB_DETAILS
set DESCRIPTION = #{description,jdbcType=VARCHAR},
JOB_CLASS_NAME = #{jobClassName,jdbcType=VARCHAR},
IS_DURABLE = #{isDurable,jdbcType=VARCHAR},

18
src/main/resources/mapper/szwh/TriggerMapper.xml

@ -29,24 +29,28 @@
<sql id="Blob_Column_List">
JOB_DATA
</sql>
<!-- 数据表名 -->
<sql id="tbname">QRTZ_TRIGGERS</sql>
<select id="selectByPrimaryKey" parameterType="cn.chjyj.szwh.bean.TriggerKey" resultMap="ResultMapWithBLOBs">
select
<include refid="Base_Column_List"/>
,
<include refid="Blob_Column_List"/>
from qrtz_triggers
from <include refid="tbname"/>
where SCHED_NAME = #{schedName,jdbcType=VARCHAR}
and TRIGGER_NAME = #{triggerName,jdbcType=VARCHAR}
and TRIGGER_GROUP = #{triggerGroup,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="cn.chjyj.szwh.bean.TriggerKey">
delete from qrtz_triggers
delete from <include refid="tbname"/>
where SCHED_NAME = #{schedName,jdbcType=VARCHAR}
and TRIGGER_NAME = #{triggerName,jdbcType=VARCHAR}
and TRIGGER_GROUP = #{triggerGroup,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="cn.chjyj.szwh.bean.Trigger">
insert into qrtz_triggers (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP,
insert into <include refid="tbname"/> (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP,
JOB_NAME, JOB_GROUP, DESCRIPTION,
NEXT_FIRE_TIME, PREV_FIRE_TIME, PRIORITY,
TRIGGER_STATE, TRIGGER_TYPE, START_TIME,
@ -60,7 +64,7 @@
#{jobData,jdbcType=LONGVARBINARY})
</insert>
<insert id="insertSelective" parameterType="cn.chjyj.szwh.bean.Trigger">
insert into qrtz_triggers
insert into <include refid="tbname"/>
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="schedName != null">
SCHED_NAME,
@ -163,7 +167,7 @@
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="cn.chjyj.szwh.bean.Trigger">
update qrtz_triggers
update <include refid="tbname"/>
<set>
<if test="jobName != null">
JOB_NAME = #{jobName,jdbcType=VARCHAR},
@ -210,7 +214,7 @@
and TRIGGER_GROUP = #{triggerGroup,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="cn.chjyj.szwh.bean.Trigger">
update qrtz_triggers
update <include refid="tbname"/>
set JOB_NAME = #{jobName,jdbcType=VARCHAR},
JOB_GROUP = #{jobGroup,jdbcType=VARCHAR},
DESCRIPTION = #{description,jdbcType=VARCHAR},
@ -229,7 +233,7 @@
and TRIGGER_GROUP = #{triggerGroup,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="cn.chjyj.szwh.bean.Trigger">
update qrtz_triggers
update <include refid="tbname"/>
set JOB_NAME = #{jobName,jdbcType=VARCHAR},
JOB_GROUP = #{jobGroup,jdbcType=VARCHAR},
DESCRIPTION = #{description,jdbcType=VARCHAR},

62
src/test/java/cn/chjyj/szwh/mapper/JobDetailMapperTest.java

@ -0,0 +1,62 @@
package cn.chjyj.szwh.mapper;
import cn.chjyj.szwh.bean.JobDetail;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;
@SpringBootTest
@RunWith(SpringRunner.class)
public class JobDetailMapperTest {
@Autowired
private JobDetailMapper jobDetailMapper;
@Test
public void deleteByPrimaryKey() {
}
@Test
public void insert() {
JobDetail jobDetail= new JobDetail();
jobDetail.setJobClassName("szwhJob");
jobDetail.setSchedName("szwhjob");
jobDetail.setJobName("szwhjob");
jobDetail.setJobGroup("szwh");
// 是否持久化
jobDetail.setIsDurable("1");
jobDetail.setIsNonconcurrent("1");
jobDetail.setIsUpdateData("0");
jobDetail.setRequestsRecovery("1");
jobDetail.setJobData(null);
jobDetailMapper.insert(jobDetail);
}
@Test
public void insertSelective() {
}
@Test
public void selectByPrimaryKey() {
}
@Test
public void updateByPrimaryKeySelective() {
}
@Test
public void updateByPrimaryKeyWithBLOBs() {
}
@Test
public void updateByPrimaryKey() {
}
@Test
public void getJobAndTriggerDetails() {
}
}
Loading…
Cancel
Save