diff --git a/ad-distribute-starters/ad-distribute-starter-job/pom.xml b/ad-distribute-starters/ad-distribute-starter-job/pom.xml
new file mode 100644
index 0000000..572578f
--- /dev/null
+++ b/ad-distribute-starters/ad-distribute-starter-job/pom.xml
@@ -0,0 +1,34 @@
+
+
+ * 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"); + } + +} diff --git a/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlAdminProperties.java b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlAdminProperties.java new file mode 100644 index 0000000..b7c28cc --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlAdminProperties.java @@ -0,0 +1,19 @@ +package com.baiye.ballcat.common.job.properties; + +import lombok.Data; + +/** + * @author lengleng + * @date 2019-09-18 + *
+ * xxl 管控台相关属性
+ */
+@Data
+public class XxlAdminProperties {
+
+ /**
+ * 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。 执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
+ */
+ private String addresses;
+
+}
diff --git a/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlExecutorProperties.java b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlExecutorProperties.java
new file mode 100644
index 0000000..fd8123f
--- /dev/null
+++ b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlExecutorProperties.java
@@ -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 [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP ,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和
+ * "调度中心请求并触发任务"
+ */
+ private String ip;
+
+ /**
+ * 执行器端口号 [选填]:小于等于0则自动获取;单机部署多个执行器且非自动获取端口时,注意要配置不同执行器端口;
+ */
+ private Integer port = 0;
+
+ /**
+ * 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
+ */
+ private String logPath;
+
+ /**
+ * 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则, 如-1, 关闭自动清理功能;
+ */
+ private Integer logRetentionDays = 30;
+
+}
diff --git a/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlJobProperties.java b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlJobProperties.java
new file mode 100644
index 0000000..41ee524
--- /dev/null
+++ b/ad-distribute-starters/ad-distribute-starter-job/src/main/java/com/baiye/ballcat/common/job/properties/XxlJobProperties.java
@@ -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();
+
+}
\ No newline at end of file
diff --git a/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring.factories b/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..857a151
--- /dev/null
+++ b/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,4 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ com.baiye.ballcat.common.job.XxlJobAutoConfiguration
+
+
diff --git a/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..9a5aef6
--- /dev/null
+++ b/ad-distribute-starters/ad-distribute-starter-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.baiye.ballcat.common.job.XxlJobAutoConfiguration
\ No newline at end of file
diff --git a/ad-distribute-starters/pom.xml b/ad-distribute-starters/pom.xml
index 08e584f..4fbece3 100644
--- a/ad-distribute-starters/pom.xml
+++ b/ad-distribute-starters/pom.xml
@@ -17,13 +17,15 @@