新增:pbs服务集成xxljob

This commit is contained in:
yangyang01000846
2026-01-18 22:59:46 +08:00
parent 4c12c8e5c3
commit edc8ed2980
8 changed files with 269 additions and 47 deletions

View File

@@ -0,0 +1,90 @@
package com.sdm.pbs.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、引入依赖
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}

View File

@@ -1,58 +1,63 @@
package com.sdm.pbs.schedule.hpc; package com.sdm.pbs.schedule.hpc;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
// 后期多节点部署,优化成分布式定时任务 // 后期多节点部署,优化成分布式定时任务
@Component @Component
public class HpcJobStatusSchedule { public class HpcJobStatusSchedule {
@Value("${task.schedule.interval:120}") // @Value("${task.schedule.interval:120}")
private long interval; // private long interval;
//
@Value("${task.schedule.poolSize:1}") // @Value("${task.schedule.poolSize:1}")
private int poolSize; // private int poolSize;
//
private ScheduledExecutorService scheduler; // private ScheduledExecutorService scheduler;
@Autowired @Autowired
private HpcJobStatusScheduleExcutor hpcJobStatusScheduleService; private HpcJobStatusScheduleExcutor hpcJobStatusScheduleService;
/** // xxljob平台配置定时任务
* 初始化定时任务直接提交Service作为任务 @XxlJob("hpcJobStatusHandler")
*/ public void hpcJobStatusHandler() throws Exception {
@PostConstruct XxlJobHelper.log("XXL-JOB:拉起Hpc任务更新开始");
public void initScheduledTask() { hpcJobStatusScheduleService.run();
scheduler = Executors.newScheduledThreadPool(poolSize); XxlJobHelper.log("XXL-JOB:拉起Hpc任务更新结束");
scheduler.scheduleWithFixedDelay(
hpcJobStatusScheduleService,
0,
interval,
TimeUnit.SECONDS
);
} }
/**
* 销毁线程池 // /**
*/ // * 初始化定时任务直接提交Service作为任务
@PreDestroy // */
public void destroy() { // @PostConstruct
if (scheduler != null) { // public void initScheduledTask() {
scheduler.shutdown(); // scheduler = Executors.newScheduledThreadPool(poolSize);
try { // scheduler.scheduleWithFixedDelay(
if (!scheduler.awaitTermination(1, TimeUnit.MINUTES)) { // hpcJobStatusScheduleService,
scheduler.shutdownNow(); // 0,
} // interval,
} catch (InterruptedException e) { // TimeUnit.SECONDS
scheduler.shutdownNow(); // );
} // }
}
} // /**
// * 销毁线程池
// */
// @PreDestroy
// public void destroy() {
// if (scheduler != null) {
// scheduler.shutdown();
// try {
// if (!scheduler.awaitTermination(1, TimeUnit.MINUTES)) {
// scheduler.shutdownNow();
// }
// } catch (InterruptedException e) {
// scheduler.shutdownNow();
// }
// }
// }
} }

View File

@@ -16,7 +16,9 @@ import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class HpcJobStatusScheduleExcutor implements Runnable{ public class HpcJobStatusScheduleExcutor {
//public class HpcJobStatusScheduleExcutor implements Runnable{
@Autowired @Autowired
private ISimulationJobService simulationJobService; private ISimulationJobService simulationJobService;
@@ -28,7 +30,7 @@ public class HpcJobStatusScheduleExcutor implements Runnable{
@Autowired @Autowired
private HpcJobStatusStrategyFactory strategyFactory; private HpcJobStatusStrategyFactory strategyFactory;
@Override // 改成xxljob,普通的service 方法,非本地定时任务线程的方式
public void run() { public void run() {
try { try {
// Configuring,Queued,Running,Canceled,Finished,Failed // Configuring,Queued,Running,Canceled,Finished,Failed

View File

@@ -151,3 +151,32 @@ security:
testEnStr: ENC(095i92PAFyJQ5kEnkiaCYReMEtw+Dwc8qnS1i7Vx0Y8=) testEnStr: ENC(095i92PAFyJQ5kEnkiaCYReMEtw+Dwc8qnS1i7Vx0Y8=)
testEnStr1: ENC(AtQcdulLNvaSvboZuWsXIxuCwrHyUoG3oEGtmKfDSbs=) testEnStr1: ENC(AtQcdulLNvaSvboZuWsXIxuCwrHyUoG3oEGtmKfDSbs=)
testEnStr2: ENC(+QKYnI6gAYu1SbLaZQTkZA==) testEnStr2: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
# xxljob 配置开始
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
# 执行器应用名称
appname: pbs-job-executor
# 执行器注册地址默认使用address注册若为null则使用ip:port注册
address:
# 执行器IP
ip:
# 执行器端口,为了好记web服务端口+1000
port: 8105
# 执行器日志路径
logpath: /home/app/pbs/xxljob
# 执行器日志保留天数
logretentiondays: 14
# 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02"
excludedpackage:
# xxljob 配置结束

View File

@@ -146,4 +146,33 @@ security:
paths: paths:
- /pbs/jobFileCallback - /pbs/jobFileCallback
- /pbs/netTest - /pbs/netTest
- /pbs/adapterSubmitHpcJob - /pbs/adapterSubmitHpcJob
# xxljob 配置开始
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
# 执行器应用名称
appname: pbs-job-executor
# 执行器注册地址默认使用address注册若为null则使用ip:port注册
address:
# 执行器IP
ip:
# 执行器端口,为了好记web服务端口+1000
port: 8105
# 执行器日志路径
logpath: /home/app/pbs/xxljob
# 执行器日志保留天数
logretentiondays: 14
# 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02"
excludedpackage:
# xxljob 配置结束

View File

@@ -93,4 +93,34 @@ hpc:
url: http://172.27.3.135/JSONAPI/JSONAPI.ashx url: http://172.27.3.135/JSONAPI/JSONAPI.ashx
#logging: #logging:
# config: ./config/logback.xml # config: ./config/logback.xml
# 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
# 执行器应用名称
appname: pbs-job-executor
# 执行器注册地址默认使用address注册若为null则使用ip:port注册
address:
# 执行器IP
ip:
# 执行器端口,为了好记web服务端口+1000
port: 8105
# 执行器日志路径
logpath: D:\home\app\pbs\xxljob
# 执行器日志保留天数
logretentiondays: 14
# 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02"
excludedpackage:
# xxljob 配置结束

View File

@@ -157,4 +157,33 @@ security:
- /getMain - /getMain
- /getProductLine - /getProductLine
- /getProjectBatch - /getProjectBatch
- /getProjectInfo - /getProjectInfo
# xxljob 配置开始
xxl:
job:
admin:
# 调度中心地址列表
addresses: http://192.168.30.148:7110/xxl-job-admin
# 调度中心访问令牌
accessToken: default_token
# xxl-job 超时时间默认3秒
timeout: 3
executor:
# 执行器是否启用默认true
enabled: true
# 执行器应用名称
appname: pbs-job-executor
# 执行器注册地址默认使用address注册若为null则使用ip:port注册
address:
# 执行器IP
ip:
# 执行器端口,为了好记web服务端口+1000
port: 8105
# 执行器日志路径
logpath: /home/app/pbs/xxljob
# 执行器日志保留天数
logretentiondays: 14
# 执行器排除扫描的包,多个用逗号分隔,如 "org.package01" 或 "org.package01,org.package02"
excludedpackage:
# xxljob 配置结束

View File

@@ -303,6 +303,14 @@
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.38</version> <version>5.8.38</version>
</dependency> </dependency>
<!-- XXL-JOB 核心依赖 -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>