diff --git a/pom.xml b/pom.xml index 1733d4c..ac3be03 100644 --- a/pom.xml +++ b/pom.xml @@ -119,6 +119,12 @@ org.springblade blade-starter-report + + + com.xuxueli + xxl-job-core + 2.3.1 + diff --git a/src/main/java/org/springblade/common/config/XxlJobConfig.java b/src/main/java/org/springblade/common/config/XxlJobConfig.java new file mode 100644 index 0000000..bd2eec4 --- /dev/null +++ b/src/main/java/org/springblade/common/config/XxlJobConfig.java @@ -0,0 +1,78 @@ +package org.springblade.common.config; + +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 Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); + + @Value("${xxl.job.admin.addresses}") + private String adminAddresses; + + @Value("${xxl.job.accessToken}") + private String accessToken; + + @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; + + + @Bean + public XxlJobSpringExecutor xxlJobExecutor() { + logger.info(">>>>>>>>>>> xxl-job config init."); + XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); + xxlJobSpringExecutor.setAdminAddresses(adminAddresses); + xxlJobSpringExecutor.setAppname(appname); + xxlJobSpringExecutor.setAddress(address); + xxlJobSpringExecutor.setIp(ip); + xxlJobSpringExecutor.setPort(port); + xxlJobSpringExecutor.setAccessToken(accessToken); + xxlJobSpringExecutor.setLogPath(logPath); + xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); + + 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/src/main/java/org/springblade/ftpdemo/task/IdentificationUpTask.java b/src/main/java/org/springblade/ftpdemo/task/IdentificationUpTask.java index 48d7a6b..5ac1f8c 100644 --- a/src/main/java/org/springblade/ftpdemo/task/IdentificationUpTask.java +++ b/src/main/java/org/springblade/ftpdemo/task/IdentificationUpTask.java @@ -24,7 +24,7 @@ public class IdentificationUpTask { private final NbmsEntApplyServcie nbmsEntApplyServcie; private final Method method; - @Scheduled(cron = "0/20 * * * * ? ") +// @Scheduled(cron = "0/20 * * * * ? ") public void refreshAliDeviceStatus() { // 标识解析企业主体信息上报检测新增并上传 threePackMethod(0); diff --git a/src/main/java/org/springblade/ftpdemo/task/TestTask.java b/src/main/java/org/springblade/ftpdemo/task/TestTask.java index cdc99db..49d6085 100644 --- a/src/main/java/org/springblade/ftpdemo/task/TestTask.java +++ b/src/main/java/org/springblade/ftpdemo/task/TestTask.java @@ -1,5 +1,7 @@ package org.springblade.ftpdemo.task; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; import lombok.AllArgsConstructor; import org.springblade.core.tool.utils.DateUtil; import org.springblade.ftpdemo.controller.SSHRemoteCall; @@ -18,12 +20,13 @@ import java.util.Vector; * @since 2022/12/1 */ @Component -@EnableScheduling +//@EnableScheduling @AllArgsConstructor public class TestTask { private final Method method; // @Scheduled(cron = "0/8 * * * * ? ") + @XxlJob("demoJobHandler") public void refreshAliDeviceStatus() throws Exception { StopWatch stopWatch = new StopWatch("读取表6日志,生成加密文件,上传" ); stopWatch.start(); @@ -32,7 +35,7 @@ public class TestTask { method.creatSixUpFileAndUp(yyyyMMdd, "1"); stopWatch.stop(); double seconds = stopWatch.getTotalTimeSeconds(); - System.out.println("完成,花费:"+seconds); + XxlJobHelper.log("XXL-JOB, 上传日志成功! 共花费:",seconds); } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 655bca5..5a8a9d1 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -12,10 +12,33 @@ spring: # nodes: 127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003 # commandTimeout: 5000 datasource: + dynamic: + #设置默认的数据源或者数据源组 + primary: mysql + #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 + strict: false + datasource: + mysql: #第一数据源 别名 + #url路径 + url: jdbc:mysql://223.99.197.190:13306/bladex_boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true + #驱动 + driver-class-name: com.mysql.cj.jdbc.Driver + username: root #数据库账号 + password: Qn12345@ #数据库密码 + type: com.zaxxer.hikari.HikariDataSource #指定驱动类型 + mysql2: #第二数据源 别名 + #驱动和上面的不同是因为这个驱动是别人封装的 + #不是自己封装的驱动就使用数据库的驱动 + driver-class-name: com.mysql.cj.jdbc.Drive + url: jdbc:nds://127.0.0.1:3306/测试2?appname=app_yklcbzhxt&characterEncoding=utf8&serverTime=Asia/Shanghai + username: root + password: 123 + type: com.zaxxer.hikari.HikariDataSource + # MySql - url: jdbc:mysql://localhost:3306/bladex_boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true - username: root - password: root +# url: jdbc:mysql://localhost:3306/bladex_boot +# username: root +# password: root # PostgreSQL #url: jdbc:postgresql://127.0.0.1:5432/bladex_boot #username: postgres @@ -33,6 +56,21 @@ spring: #username: BLADEX_BOOT #password: BLADEX_BOOT +# job执行器配置 +xxl: + job: + enabled: true + executor: + appname: xxl-job-sample-local + address: + ip: + port: 9999 + logpath: D:\aaa\test + logretentiondays: 30 + accessToken: default_token + admin: + addresses: http://localhost:8080/xxl-job-admin + #第三方登陆 social: enabled: true @@ -52,3 +90,5 @@ blade: upload-domain: http://localhost:8999 remote-path: /usr/share/nginx/html +logging: + config: classpath:logback.xml diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..d5a0d2c --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,29 @@ + + + + logback + + + + + %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n + + + + + ${log.path} + + ${log.path}.%d{yyyy-MM-dd}.zip + + + %date %level [%thread] %logger{36} [%file : %line] %msg%n + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/org/springblade/test/TestMethod.java b/src/test/java/org/springblade/test/TestMethod.java deleted file mode 100644 index a04cc3f..0000000 --- a/src/test/java/org/springblade/test/TestMethod.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.springblade.test; - - -import lombok.AllArgsConstructor; -import org.junit.jupiter.api.Test; -import org.springblade.core.tool.utils.DateUtil; -import org.springblade.ftpdemo.controller.SSHRemoteCall; -import org.springblade.ftpdemo.service.Method; -import org.springblade.ftpdemo.service.impl.MethodImpl; -import org.springblade.ftpdemo.util.Constant; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.util.Date; -import java.util.Vector; - -/** - * @author laifeng - * @since 2022/11/30 - */ - -@SpringBootTest -public class TestMethod { - - - @Test - void test1() { - String operatorTime = "20221201000030"; - - Date date = DateUtil.parse(operatorTime, DateUtil.PATTERN_DATETIME_MINI); - String format = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss"); - System.out.println(format); - - - } - - @Test - void test2() throws Exception { - - // 1、首先远程连接ssh - SSHRemoteCall.getInstance().sshRemoteCallLogin(Constant.host, Constant.user,Constant.password1); - Vector files = SSHRemoteCall.getInstance().listFiles("/opt/2022-11-30"); - for (Object file : files) { - System.out.println(file.toString()); - } - - - } -}