From 82fd403e52d5678d33ac800ede73cd548f746b7a Mon Sep 17 00:00:00 2001 From: wangqiy <1530284170@qq.com> Date: Mon, 21 Apr 2025 15:06:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=99=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/task/DemoJobHandler.java | 9 ++- .../agri/web/core/config/XxlJobConfig.java | 78 +++++++++++++++++++ .../src/main/resources/application-dev.yml | 4 +- 3 files changed, 85 insertions(+), 6 deletions(-) create mode 100644 base-admin/src/main/java/com/agri/web/core/config/XxlJobConfig.java diff --git a/base-admin/src/main/java/com/agri/web/controller/task/DemoJobHandler.java b/base-admin/src/main/java/com/agri/web/controller/task/DemoJobHandler.java index 0756232..d4389bc 100644 --- a/base-admin/src/main/java/com/agri/web/controller/task/DemoJobHandler.java +++ b/base-admin/src/main/java/com/agri/web/controller/task/DemoJobHandler.java @@ -1,20 +1,21 @@ package com.agri.web.controller.task; +import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j -@Component(value = "demoJobHandler") +@Component("demoJobHandler") public class DemoJobHandler { /** * 更新状态 **/ @XxlJob("updateStatus") - public void updateStatus() { - String jobParam = XxlJobHelper.getJobParam(); - log.info("任务执行" + jobParam); + public ReturnT updateStatus() { + log.error("================执行器Demo执行成功===================="); + return ReturnT.SUCCESS; } } diff --git a/base-admin/src/main/java/com/agri/web/core/config/XxlJobConfig.java b/base-admin/src/main/java/com/agri/web/core/config/XxlJobConfig.java new file mode 100644 index 0000000..d84875f --- /dev/null +++ b/base-admin/src/main/java/com/agri/web/core/config/XxlJobConfig.java @@ -0,0 +1,78 @@ +package com.agri.web.core.config; + +import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * xxl-job-config + * + * @author zcg + * @since 2023/2/19 + */ +@Configuration +@Slf4j +public class XxlJobConfig { + + @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() { + log.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/base-admin/src/main/resources/application-dev.yml b/base-admin/src/main/resources/application-dev.yml index 2a39804..9e64072 100644 --- a/base-admin/src/main/resources/application-dev.yml +++ b/base-admin/src/main/resources/application-dev.yml @@ -215,7 +215,7 @@ xxl: admin: # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; # 账号/密码 admin/123456 - addresses: http://localhost:9090/xxl-job-admin + addresses: http://localhost:9090/xxl-job-admin/ executor: # 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 address: @@ -224,7 +224,7 @@ xxl: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; ip: # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; - port: 9999 + port: 0 # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; logpath: /data/applogs/log/xxl-job/jobhandler # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;