Commit 0c60e535 by yuwei

2.0.0项目初始化

parent 89a06fa6
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
spring: spring:
redis: redis:
database: 1 database: 1
host: 127.0.0.1 host: 192.168.234.101
port: 6379 port: 6379
password: # 密码(默认为空) password: 1234@abcd # 密码(默认为空)
timeout: 6000ms # 连接超时时长(毫秒) timeout: 6000ms # 连接超时时长(毫秒)
lettuce: lettuce:
pool: pool:
...@@ -13,7 +13,16 @@ spring: ...@@ -13,7 +13,16 @@ spring:
max-idle: 10 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接 min-idle: 5 # 连接池中的最小空闲连接
datasource: datasource:
dynamic: mysql:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://192.168.234.100:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
quartz:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.234.100:3306/data_cloud_quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource
hikari: hikari:
auto-commit: false auto-commit: false
...@@ -38,13 +47,6 @@ spring: ...@@ -38,13 +47,6 @@ spring:
cacheServerConfiguration: true cacheServerConfiguration: true
elideSetAutoCommits: true elideSetAutoCommits: true
maintainTimeStats: false maintainTimeStats: false
primary: mysql
datasource:
mysql:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
quartz: quartz:
job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。 job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
auto-startup: true # Quartz 是否自动启动 auto-startup: true # Quartz 是否自动启动
...@@ -56,14 +58,6 @@ spring: ...@@ -56,14 +58,6 @@ spring:
properties: properties:
org: org:
quartz: quartz:
datasource:
quartzDataSource:
# 新版驱动从com.mysql.jdbc.Driver变更为com.mysql.cj.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
# 数据源需要添加时间标准和指定编码格式解决乱码 You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
url: jdbc:mysql://127.0.0.1:3306/data_cloud_quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
scheduler: scheduler:
instancName: clusteredScheduler instancName: clusteredScheduler
instanceId: AUTO instanceId: AUTO
...@@ -106,10 +100,3 @@ security: ...@@ -106,10 +100,3 @@ security:
resource: resource:
loadBalanced: true loadBalanced: true
token-info-uri: http://localhost:8612/auth/oauth/check_token token-info-uri: http://localhost:8612/auth/oauth/check_token
\ No newline at end of file
datasource:
scheduler:
url: jdbc:mysql://127.0.0.1:3306/data_cloud_quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 1234@abcd
driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
package cn.datax.service.quartz.api.entity; package cn.datax.service.quartz.api.entity;
import cn.datax.common.base.DataScopeBaseEntity; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 定时任务日志信息表 * 定时任务日志信息表
...@@ -15,14 +17,19 @@ import lombok.experimental.Accessors; ...@@ -15,14 +17,19 @@ import lombok.experimental.Accessors;
* @since 2020-05-14 * @since 2020-05-14
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("qrtz_job_log") @TableName("qrtz_job_log")
public class QrtzJobLogEntity extends DataScopeBaseEntity { public class QrtzJobLogEntity implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
/** /**
* 主键
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
/**
* 任务ID * 任务ID
*/ */
private String jobId; private String jobId;
...@@ -31,4 +38,16 @@ public class QrtzJobLogEntity extends DataScopeBaseEntity { ...@@ -31,4 +38,16 @@ public class QrtzJobLogEntity extends DataScopeBaseEntity {
* 信息记录 * 信息记录
*/ */
private String msg; private String msg;
/**
* 状态(0不启用,1启用)
*/
private Integer status;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField(value = "create_time")
private LocalDateTime createTime;
} }
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<version>2.0.0</version> <version>2.0.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>2.0.0</version>
<artifactId>quartz-service</artifactId> <artifactId>quartz-service</artifactId>
<dependencies> <dependencies>
...@@ -53,6 +53,12 @@ ...@@ -53,6 +53,12 @@
<groupId>cn.datax</groupId> <groupId>cn.datax</groupId>
<artifactId>datax-common-mybatis</artifactId> <artifactId>datax-common-mybatis</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.datax</groupId> <groupId>cn.datax</groupId>
......
...@@ -8,9 +8,9 @@ import org.springframework.beans.factory.config.AutowireCapableBeanFactory; ...@@ -8,9 +8,9 @@ import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.autoconfigure.quartz.QuartzDataSource; import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.scheduling.quartz.AdaptableJobFactory; import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -20,19 +20,55 @@ import javax.sql.DataSource; ...@@ -20,19 +20,55 @@ import javax.sql.DataSource;
@Configuration @Configuration
public class QuartzConfig { public class QuartzConfig {
/**
* 创建 mysql 数据源的配置对象
*/
@Primary
@Bean(name = "mysqlDataSourceProperties")
@ConfigurationProperties(prefix = "spring.datasource.mysql") // 读取 spring.datasource.mysql 配置到 DataSourceProperties 对象
public DataSourceProperties mysqlDataSourceProperties() {
return new DataSourceProperties();
}
/**
* 创建 mysql 数据源
*/
@Primary
@Bean(name = "mysqlDataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql.hikari") // 读取 spring.datasource.mysql 配置到 HikariDataSource 对象
public DataSource userDataSource() {
// 获得 DataSourceProperties 对象
DataSourceProperties properties = this.mysqlDataSourceProperties();
// 创建 HikariDataSource 对象
return createHikariDataSource(properties);
}
/**
* 创建 quartz 数据源的配置对象
*/
@Bean(name = "quartzDataSourceProperties") @Bean(name = "quartzDataSourceProperties")
@ConfigurationProperties(prefix = "datasource.scheduler") @ConfigurationProperties(prefix = "spring.datasource.quartz") // 读取 spring.datasource.quartz 配置到 DataSourceProperties 对象
public DataSourceProperties quartzDataSourceProperties() { public DataSourceProperties quartzDataSourceProperties() {
return new DataSourceProperties(); return new DataSourceProperties();
} }
/**
* 创建 quartz 数据源
*/
@Bean(name = "quartzDataSource") @Bean(name = "quartzDataSource")
@ConfigurationProperties(prefix = "spring.datasource.quartz.hikari")
@QuartzDataSource @QuartzDataSource
@ConfigurationProperties(prefix = "datasource.scheduler") public DataSource quartzDataSource() {
public DataSource quartzDataSource(){ // 获得 DataSourceProperties 对象
DataSource datasource = quartzDataSourceProperties().initializeDataSourceBuilder() DataSourceProperties properties = this.quartzDataSourceProperties();
.type(HikariDataSource.class).build(); // 创建 HikariDataSource 对象
return datasource; return createHikariDataSource(properties);
}
private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {
// 创建 HikariDataSource 对象
HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
return dataSource;
} }
/** /**
...@@ -70,6 +106,7 @@ public class QuartzConfig { ...@@ -70,6 +106,7 @@ public class QuartzConfig {
public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception { public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception {
SchedulerFactoryBean factoryBean = new SchedulerFactoryBean(); SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
factoryBean.setJobFactory(quartzJobFactory); factoryBean.setJobFactory(quartzJobFactory);
factoryBean.setDataSource(quartzDataSource());
factoryBean.afterPropertiesSet(); factoryBean.afterPropertiesSet();
Scheduler scheduler = factoryBean.getScheduler(); Scheduler scheduler = factoryBean.getScheduler();
scheduler.start(); scheduler.start();
......
...@@ -118,4 +118,43 @@ public class QrtzJobController extends BaseController { ...@@ -118,4 +118,43 @@ public class QrtzJobController extends BaseController {
qrtzJobService.deleteQrtzJobById(id); qrtzJobService.deleteQrtzJobById(id);
return R.ok(); return R.ok();
} }
/**
* 暂停任务
* @param id
* @return
*/
@ApiOperation(value = "暂停任务", notes = "根据url的id来暂停指定任务")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@PostMapping("/pause/{id}")
public R pauseById(@PathVariable("id") String id) {
qrtzJobService.pauseById(id);
return R.ok();
}
/**
* 恢复任务
* @param id
* @return
*/
@ApiOperation(value = "恢复任务", notes = "根据url的id来恢复指定任务")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@PostMapping("/resume/{id}")
public R resumeById(@PathVariable("id") String id) {
qrtzJobService.resumeById(id);
return R.ok();
}
/**
* 立即执行任务
* @param id
* @return
*/
@ApiOperation(value = "立即执行任务", notes = "根据url的id来立即执行指定任务")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@PostMapping("/run/{id}")
public R runById(@PathVariable("id") String id) {
qrtzJobService.runById(id);
return R.ok();
}
} }
...@@ -27,7 +27,6 @@ public class ScheduleJob extends QuartzJobBean { ...@@ -27,7 +27,6 @@ public class ScheduleJob extends QuartzJobBean {
protected void executeInternal(JobExecutionContext context) { protected void executeInternal(JobExecutionContext context) {
QrtzJobEntity job = (QrtzJobEntity) context.getMergedJobDataMap().get(ScheduleUtil.JOB_DATA_MAP); QrtzJobEntity job = (QrtzJobEntity) context.getMergedJobDataMap().get(ScheduleUtil.JOB_DATA_MAP);
log.info("运行任务{}", job); log.info("运行任务{}", job);
// QrtzJobLogService qrtzJobLogService = SpringContextHolder.getBean(QrtzJobLogService.class);
QrtzJobLogEntity jobLog = new QrtzJobLogEntity(); QrtzJobLogEntity jobLog = new QrtzJobLogEntity();
jobLog.setJobId(job.getId()); jobLog.setJobId(job.getId());
jobLog.setCreateTime(LocalDateTime.now()); jobLog.setCreateTime(LocalDateTime.now());
......
...@@ -6,11 +6,7 @@ ...@@ -6,11 +6,7 @@
<resultMap id="BaseResultMap" type="cn.datax.service.quartz.api.entity.QrtzJobLogEntity"> <resultMap id="BaseResultMap" type="cn.datax.service.quartz.api.entity.QrtzJobLogEntity">
<result column="id" property="id" /> <result column="id" property="id" />
<result column="status" property="status" /> <result column="status" property="status" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" /> <result column="create_time" property="createTime" />
<result column="create_dept" property="createDept" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="job_id" property="jobId" /> <result column="job_id" property="jobId" />
<result column="msg" property="msg" /> <result column="msg" property="msg" />
</resultMap> </resultMap>
...@@ -19,11 +15,7 @@ ...@@ -19,11 +15,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, id,
status, status,
create_by,
create_time, create_time,
create_dept,
update_by,
update_time,
job_id, msg job_id, msg
</sql> </sql>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment