diff --git a/pom.xml b/pom.xml index 72b7250..ec267a2 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,13 @@ + + + com.xuxueli + xxl-job-core + 2.4.2 + + diff --git a/src/main/java/com/example/demo/config/XxlJobConfig.java b/src/main/java/com/example/demo/config/XxlJobConfig.java new file mode 100644 index 0000000..16d6372 --- /dev/null +++ b/src/main/java/com/example/demo/config/XxlJobConfig.java @@ -0,0 +1,78 @@ +package com.example.demo.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/com/example/demo/job/DemoJob.java b/src/main/java/com/example/demo/job/DemoJob.java new file mode 100644 index 0000000..743de9a --- /dev/null +++ b/src/main/java/com/example/demo/job/DemoJob.java @@ -0,0 +1,13 @@ +package com.example.demo.job; + +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.stereotype.Service; + +@Service +public class DemoJob { + + @XxlJob("demoJobHandler") + public void demoJobHandler() throws Exception { + System.out.println("I'm job handler, I'm running..."); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index c226a2c..bf83bae 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,3 +1,15 @@ spring: application: name: demo +xxl: + job: + accessToken: default_token + admin: + addresses: https://zfmc.petrochina-nk.com.cn/xxl-job-admin + executor: + appname: nksy-task-demo + address: + ip: + port: 9998 + logpath: /data/applogs/xxl-job/jobhandler + logretentiondays: 3