添加xxl-job

master
wjt 1 year ago
parent 0cffd50c87
commit 99649611c1

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ad-distribute-starters</artifactId>
<groupId>com.baiye</groupId>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ad-distribute-starter-job</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!--xxl job-->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>

@ -0,0 +1,96 @@
package com.baiye.ballcat.common.job;
import com.baiye.ballcat.common.job.properties.XxlExecutorProperties;
import com.baiye.ballcat.common.job.properties.XxlJobProperties;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
/**
* @author lengleng
* @date 2019-09-18
* <p>
* xxl
*/
@Slf4j
@AutoConfiguration
@EnableConfigurationProperties(XxlJobProperties.class)
@ConditionalOnProperty(prefix = XxlJobProperties.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
@RequiredArgsConstructor
public class XxlJobAutoConfiguration {
private final Environment environment;
@Bean
public XxlJobSpringExecutor xxlJobSpringExecutor(XxlJobProperties xxlJobProperties) {
if (log.isInfoEnabled()) {
log.info(">>>>>>>>>>> xxl-job config init.");
}
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdmin().getAddresses());
XxlExecutorProperties executorProperties = xxlJobProperties.getExecutor();
xxlJobSpringExecutor.setAppname(getExecutorName(executorProperties));
xxlJobSpringExecutor.setIp(executorProperties.getIp());
xxlJobSpringExecutor.setPort(executorProperties.getPort());
xxlJobSpringExecutor.setAccessToken(getAccessToken(xxlJobProperties));
xxlJobSpringExecutor.setLogPath(getLogPath(executorProperties));
xxlJobSpringExecutor.setLogRetentionDays(executorProperties.getLogRetentionDays());
xxlJobSpringExecutor.setAddress(executorProperties.getAddress());
return xxlJobSpringExecutor;
}
/**
* Spring Boot
*
* @param properties
* @return
*/
private String getExecutorName(XxlExecutorProperties properties) {
String appName = properties.getAppname();
if (StringUtils.hasText(appName)) {
return appName;
} else {
return environment.getProperty("spring.application.name");
}
}
/**
* xxl-job
*
* @param properties
* @return
*/
private String getAccessToken(XxlJobProperties properties) {
if (StringUtils.hasText(properties.getAccessToken())) {
return properties.getAccessToken();
} else {
log.warn("为提升系统安全性,生产环境建议启用调度中心和执行器安全性校验!可通过配置项 “xxl.job.accessToken” 进行AccessToken的设置");
return null;
}
}
/**
*
*
* @param properties
* @return
*/
private String getLogPath(XxlExecutorProperties properties) {
String logPath = properties.getLogPath();
if (StringUtils.hasText(logPath)) {
return logPath;
}
return environment.getProperty("logging.file.path", "logs")
.concat("/")
.concat(environment.getProperty("spring.application.name"))
.concat("/jobs");
}
}

@ -0,0 +1,19 @@
package com.baiye.ballcat.common.job.properties;
import lombok.Data;
/**
* @author lengleng
* @date 2019-09-18
* <p>
* xxl
*/
@Data
public class XxlAdminProperties {
/**
* [] 使"执行器心跳注册""任务结果回调"
*/
private String addresses;
}

@ -0,0 +1,43 @@
package com.baiye.ballcat.common.job.properties;
import lombok.Data;
/**
* @author lengleng
* @date 2019-09-18
*/
@Data
public class XxlExecutorProperties {
/**
* AppName []spring
*/
private String appname;
/**
* 使使 IP:PORT IP
*/
private String address;
/**
* IP []IPIP IPHost "执行器注册"
* "调度中心请求并触发任务"
*/
private String ip;
/**
* []0
*/
private Integer port = 0;
/**
* [] 使
*/
private String logPath;
/**
* [] 3Log, -1,
*/
private Integer logRetentionDays = 30;
}

@ -0,0 +1,33 @@
package com.baiye.ballcat.common.job.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
/**
* @author lengleng
* @date 2019-09-18
*/
@Data
@ConfigurationProperties(prefix = XxlJobProperties.PREFIX)
public class XxlJobProperties {
public static final String PREFIX = "ballcat.xxl.job";
/**
*
*/
private boolean enabled = true;
/**
* TOKEN []
*/
private String accessToken;
@NestedConfigurationProperty
private XxlAdminProperties admin = new XxlAdminProperties();
@NestedConfigurationProperty
private XxlExecutorProperties executor = new XxlExecutorProperties();
}

@ -0,0 +1,4 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.baiye.ballcat.common.job.XxlJobAutoConfiguration

@ -17,13 +17,15 @@
<module>ad-distribute-starter-swagger</module> <module>ad-distribute-starter-swagger</module>
<module>ad-distribute-starter-file</module> <module>ad-distribute-starter-file</module>
<module>ad-distribute-starter-websocket</module> <module>ad-distribute-starter-websocket</module>
</modules> <module>ad-distribute-starter-job</module>
</modules>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
Loading…
Cancel
Save