diff --git a/data/src/main/java/com/sdm/data/config/xxljob/XxlJobConfig.java b/data/src/main/java/com/sdm/data/config/xxljob/XxlJobConfig.java new file mode 100644 index 00000000..6e66d22b --- /dev/null +++ b/data/src/main/java/com/sdm/data/config/xxljob/XxlJobConfig.java @@ -0,0 +1,90 @@ +package com.sdm.data.config.xxljob; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * xxl-job config + * + * @author xuxueli 2017-04-28 + */ +@Configuration +public class XxlJobConfig { + private static final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); + + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.admin.accessToken}") + private String accessToken; + + @Value("${xxl.job.admin.timeout}") + private int timeout; + + @Value("${xxl.job.executor.enabled}") + private Boolean enabled; + + @Value("${xxl.job.executor.appname}") + private String appname; + + @Value("${xxl.job.executor.address}") + private String address; + + @Value("${xxl.job.executor.ip}") + private String ip; + + @Value("${xxl.job.executor.port}") + private int port; + + @Value("${xxl.job.executor.logpath}") + private String logPath; + + @Value("${xxl.job.executor.logretentiondays}") + private int logRetentionDays; + + @Value("${xxl.job.executor.excludedpackage}") + private String excludedPackage; + + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + logger.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setTimeout(timeout); + xxlJobSpringExecutor.setEnabled(enabled); + xxlJobSpringExecutor.setAppname(appname); + xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + xxlJobSpringExecutor.setExcludedPackage(excludedPackage); + + return xxlJobSpringExecutor; + } + + /** + * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP; + * + * 1、引入依赖: + * + * org.springframework.cloud + * spring-cloud-commons + * ${version} + * + * + * 2、配置文件,或者容器启动变量 + * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.' + * + * 3、获取IP + * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + */ + + +} \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/schedule/DataStorageMonitorSchedule.java b/data/src/main/java/com/sdm/data/schedule/DataStorageMonitorSchedule.java new file mode 100644 index 00000000..a2cfbb25 --- /dev/null +++ b/data/src/main/java/com/sdm/data/schedule/DataStorageMonitorSchedule.java @@ -0,0 +1,28 @@ +package com.sdm.data.schedule; + +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class DataStorageMonitorSchedule { + + @Autowired + private DataStorageMonitorScheduleExcutor dataStorageMonitorScheduleService; + + /** + * 定时筛选存储空间达到阈值的用户 发送告警消息 + */ + @XxlJob("dataStorageMonitorHandler") + public void checkDataStorageSpaceAndSendAlert() throws Exception { + log.info("开始执行定时筛选存储空间达到阈值的用户任务"); + // 业务逻辑方法调度 + dataStorageMonitorScheduleService.run(); + log.info("定时筛选存储空间达到阈值的用户任务执行完成"); + } + +} diff --git a/data/src/main/java/com/sdm/data/job/DataStorageMonitorJob.java b/data/src/main/java/com/sdm/data/schedule/DataStorageMonitorScheduleExcutor.java similarity index 79% rename from data/src/main/java/com/sdm/data/job/DataStorageMonitorJob.java rename to data/src/main/java/com/sdm/data/schedule/DataStorageMonitorScheduleExcutor.java index 000318ee..4d0448ee 100644 --- a/data/src/main/java/com/sdm/data/job/DataStorageMonitorJob.java +++ b/data/src/main/java/com/sdm/data/schedule/DataStorageMonitorScheduleExcutor.java @@ -1,5 +1,4 @@ -package com.sdm.data.job; - +package com.sdm.data.schedule; import com.alibaba.fastjson2.JSON; import com.sdm.common.common.SdmResponse; @@ -12,33 +11,30 @@ import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; import com.sdm.common.service.UserNameCacheService; import com.sdm.data.model.entity.FileStorageQuota; import com.sdm.data.service.DataStorageAnalysis; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -@Component @Slf4j -@RequiredArgsConstructor -public class DataStorageMonitorJob { +@Service +public class DataStorageMonitorScheduleExcutor { - private final DataStorageAnalysis dataStorageAnalysis; - private final MessageFeignClientImpl messageFeignClient; - private final SysUserFeignClientImpl sysUserFeignClient; - private final UserNameCacheService userNameCacheService; + @Autowired + private DataStorageAnalysis dataStorageAnalysis; + @Autowired + private MessageFeignClientImpl messageFeignClient; + @Autowired + private SysUserFeignClientImpl sysUserFeignClient; + @Autowired + private UserNameCacheService userNameCacheService; - /** - * 定时筛选存储空间达到阈值的用户 发送告警消息 - */ - @Scheduled(cron = "${data.storage-monitor.cron:0 */10 * * * ?}") - public void checkDataStorageSpaceAndSendAlert() { - log.info("开始执行定时筛选存储空间达到阈值的用户任务"); + public void run() { try { SdmResponse> sdmResponse = dataStorageAnalysis.listAllUserQuotaForJob(); if (CollectionUtils.isNotEmpty(sdmResponse.getData())) { @@ -73,11 +69,9 @@ public class DataStorageMonitorJob { } }); } - log.info("定时筛选存储空间达到阈值的用户任务执行完成"); } catch (Exception e) { log.error("定时筛选存储空间达到阈值的用户任务执行失败", e); } - } } diff --git a/data/src/main/resources/application-dev-190.yml b/data/src/main/resources/application-dev-190.yml index d23b4a0c..8f366f92 100644 --- a/data/src/main/resources/application-dev-190.yml +++ b/data/src/main/resources/application-dev-190.yml @@ -132,4 +132,35 @@ security: data: storage-monitor: - cron: 0 0 0/1 * * ? \ No newline at end of file + cron: 0 0 0/1 * * ? + + +# xxljob 配置开始 +# xxl-job admin address list, such as "http://address" or "http://address01,http://address02" +xxl: + job: + admin: + # 调度中心地址列表 + addresses: http://192.168.190.161:7110/xxl-job-admin + # 调度中心访问令牌 + accessToken: default_token + # xxl-job 超时时间(秒),默认3秒 + timeout: 3 + executor: + # 执行器是否启用,默认true + enabled: true + # 执行器应用名称 服务名-job-executor + appname: data-job-executor + # 执行器注册地址:默认使用address注册,若为null则使用ip:port注册 + address: + # 执行器IP + ip: + # 执行器端口,为了好记,web服务端口+1000 + port: 8104 + # 执行器日志路径 + logpath: /home/app/data/xxljob + # 执行器日志保留天数 + logretentiondays: 14 + # 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02" + excludedpackage: +# xxljob 配置结束 \ No newline at end of file diff --git a/data/src/main/resources/application-dev-65.yml b/data/src/main/resources/application-dev-65.yml index fdce632c..e65058f3 100644 --- a/data/src/main/resources/application-dev-65.yml +++ b/data/src/main/resources/application-dev-65.yml @@ -132,4 +132,35 @@ security: data: storage-monitor: - cron: 0 0 0/1 * * ? \ No newline at end of file + cron: 0 0 0/1 * * ? + + +# xxljob 配置开始 +# xxl-job admin address list, such as "http://address" or "http://address01,http://address02" +xxl: + job: + admin: + # 调度中心地址列表 + addresses: http://192.168.65.161:7110/xxl-job-admin + # 调度中心访问令牌 + accessToken: default_token + # xxl-job 超时时间(秒),默认3秒 + timeout: 3 + executor: + # 执行器是否启用,默认true + enabled: true + # 执行器应用名称 服务名-job-executor + appname: data-job-executor + # 执行器注册地址:默认使用address注册,若为null则使用ip:port注册 + address: + # 执行器IP + ip: + # 执行器端口,为了好记,web服务端口+1000 + port: 8104 + # 执行器日志路径 + logpath: /home/app/data/xxljob + # 执行器日志保留天数 + logretentiondays: 14 + # 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02" + excludedpackage: +# xxljob 配置结束 \ No newline at end of file diff --git a/data/src/main/resources/application-local.yml b/data/src/main/resources/application-local.yml index 2ddc4efc..967ed5ed 100644 --- a/data/src/main/resources/application-local.yml +++ b/data/src/main/resources/application-local.yml @@ -142,4 +142,34 @@ data: # 0单机处理,可以指向本地,1负载均衡轮询 serverType: 0 #serverIp: 192.168.65.161 -serverIp: 192.168.65.73 \ No newline at end of file +serverIp: 192.168.65.73 + +# xxljob 配置开始 +# xxl-job admin address list, such as "http://address" or "http://address01,http://address02" +xxl: + job: + admin: + # 调度中心地址列表 + addresses: http://127.0.0.1:7110/xxl-job-admin + # 调度中心访问令牌 + accessToken: default_token + # xxl-job 超时时间(秒),默认3秒 + timeout: 3 + executor: + # 执行器是否启用,默认true + enabled: true + # 执行器应用名称 服务名-job-executor + appname: data-job-executor + # 执行器注册地址:默认使用address注册,若为null则使用ip:port注册 + address: + # 执行器IP + ip: + # 执行器端口,为了好记,web服务端口+1000 + port: 8104 + # 执行器日志路径 + logpath: D:\home\app\pbs\xxljob + # 执行器日志保留天数 + logretentiondays: 14 + # 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02" + excludedpackage: +# xxljob 配置结束 \ No newline at end of file diff --git a/data/src/main/resources/application-lyric.yml b/data/src/main/resources/application-lyric.yml index 215b0bfe..09d43d76 100644 --- a/data/src/main/resources/application-lyric.yml +++ b/data/src/main/resources/application-lyric.yml @@ -132,4 +132,34 @@ security: data: storage-monitor: - cron: 0 0 0/1 * * ? \ No newline at end of file + cron: 0 0 0/1 * * ? + +# xxljob 配置开始 +# xxl-job admin address list, such as "http://address" or "http://address01,http://address02" +xxl: + job: + admin: + # 调度中心地址列表 + addresses: http://192.168.30.146:7110/xxl-job-admin + # 调度中心访问令牌 + accessToken: default_token + # xxl-job 超时时间(秒),默认3秒 + timeout: 3 + executor: + # 执行器是否启用,默认true + enabled: true + # 执行器应用名称 服务名-job-executor + appname: data-job-executor + # 执行器注册地址:默认使用address注册,若为null则使用ip:port注册 + address: + # 执行器IP + ip: + # 执行器端口,为了好记,web服务端口+1000 + port: 8104 + # 执行器日志路径 + logpath: /home/app/data/xxljob + # 执行器日志保留天数 + logretentiondays: 14 + # 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02" + excludedpackage: +# xxljob 配置结束 \ No newline at end of file