From 040f52e09bef5cb521f0f78a8ed687de3e80b613 Mon Sep 17 00:00:00 2001 From: pbvfus8to <480171784@qq.com> Date: Wed, 18 Dec 2024 10:13:16 +0800 Subject: [PATCH] Update XxlJobConfig.java --- .../yami/shop/admin/config/XxlJobConfig.java | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java index 17452fa..79a6139 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/config/XxlJobConfig.java @@ -7,6 +7,7 @@ * * 版权所有,侵权必究! */ + package com.yami.shop.admin.config; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; @@ -19,47 +20,77 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * xxl-job config - * 为啥这里的代码要注释掉,因为很奇怪的,因为很多人都不会去下载xxl-job来跑定时任务。 - * 原本用spring 的 quartz做定时任务的,但是文档写着要忽略数据库大小写,结果很多人根本不看文档,所以干脆就把这个quartz的删掉,然后通过xxl-job执行定时任务 - * 那么又会带来一个问题,大家也不会看文档,也不会去下载xxl-job,所以要把这里面的代码注掉,要是有人需要的话,改下这里的连接配置,连上xxl-job即可。 - * 毕竟你都能找到这个文件了,下载xxl-job,修改并启动xxl-job-admin,把取消订单,确认收货之类定时任务加入到里面即可咯。还要把下面的注释掉的代码打开,这样启动项目就会连接xxl-job执行定时任务了。 + * xxl-job配置类,用于配置和初始化与XXL-JOB相关的执行器等信息,以实现定时任务通过XXL-JOB来执行的功能。 + * + * 以下是关于这段代码为何部分被注释掉的详细说明: + * 起初项目原本使用Spring的Quartz来做定时任务,但遇到一个问题,文档中写明了需要忽略数据库大小写, + * 然而实际情况是很多人并不会去仔细查看文档,导致在使用Quartz做定时任务时出现各种问题,所以决定舍弃Quartz的方式。 + * 进而考虑采用XXL-JOB来执行定时任务,但是又出现了新的问题,就是很多人同样也不会去查看文档,更不会主动去下载并配置XXL-JOB, + * 所以为了避免不必要的启动报错等情况(因为如果不配置好XXL-JOB直接启动相关代码会出错),就先将与XXL-JOB配置相关的代码注释掉了。 + * + * 如果有人确实有使用XXL-JOB执行定时任务的需求,那么操作步骤如下: + * 1. 先自行下载XXL-JOB,并按照要求进行相关配置,启动xxl-job-admin服务。 + * 2. 将需要执行的定时任务(比如取消订单、确认收货之类的定时任务)添加到xxl-job-admin中进行管理。 + * 3. 最后把下面被注释掉的代码取消注释,这样在启动项目时,就能够连接到XXL-JOB,进而通过它来执行定时任务了。 + * * @author FrozenWatermelon * @date 2021/1/18 */ @Configuration public class XxlJobConfig { + // 创建一个日志记录器,用于记录与XXL-JOB配置相关的日志信息,方便后续排查问题以及了解配置初始化等过程的情况。 private final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); + // 通过@Value注解从配置文件中读取xxl-job.admin.addresses属性值,该值代表了XXL-JOB管理端的地址,用于执行器与管理端进行通信连接。 @Value("${xxl-job.admin.addresses}") private String adminAddresses; + // 通过@Value注解从配置文件中读取xxl-job.accessToken属性值,该值作为访问令牌,用于在执行器与XXL-JOB管理端通信时进行身份验证等安全相关操作。 @Value("${xxl-job.accessToken}") private String accessToken; + // 通过@Value注解从配置文件中读取xxl-job.logPath属性值,该值指定了定时任务执行日志的存储路径,方便后续查看任务执行情况以及排查可能出现的问题。 @Value("${xxl-job.logPath}") private String logPath; + // 通过@Value注解从配置文件中读取server.port属性值,即当前项目服务所监听的端口号,后续可能会基于此端口号来确定执行器相关的端口等信息(这里是做了端口偏移使用)。 @Value("${server.port}") private int port; + // 注入InetUtils对象,该对象是Spring Cloud提供的一个工具类,用于处理网络相关的操作,在这里主要用于获取合适的IP地址, + // 特别是在多网卡、容器内部署等复杂网络环境下,能够帮助准确获取到执行器要绑定的IP地址,避免IP地址获取不准确导致的通信问题。 @Autowired private InetUtils inetUtils; + // 以下是配置XXL-JOB执行器的方法,目前被注释掉了,原因在类的开头注释部分已经详细说明了。 + // 如果要启用XXL-JOB执行定时任务,需要取消这段代码的注释,并确保已经正确配置好了XXL-JOB相关环境。 + // @Bean注解表示该方法会创建一个Spring管理的Bean对象,在这里就是创建一个XxlJobSpringExecutor类型的Bean, + // 该对象是XXL-JOB在Spring环境下的执行器实现类,负责与XXL-JOB管理端交互以及执行具体的定时任务等操作。 // @Bean // public XxlJobSpringExecutor xxlJobExecutor() { // +// // 记录一条日志信息,表示开始进行XXL-JOB配置初始化,方便在启动项目时查看相关配置是否正常加载等情况。 // logger.info(">>>>>>>>>>> xxl-job config init."); +// // 创建一个XxlJobSpringExecutor实例,用于后续配置并返回作为Spring管理的Bean对象。 // XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); +// // 设置XXL-JOB管理端的地址,让执行器知道要与哪个管理端进行通信连接,这个地址就是从配置文件中读取到的adminAddresses的值。 // xxlJobSpringExecutor.setAdminAddresses(adminAddresses); +// // 设置应用名称,这里固定设置为"mall4j",在XXL-JOB管理端可以通过这个名称来区分不同的执行器所属的应用,方便管理和监控。 // xxlJobSpringExecutor.setAppname("mall4j"); -// // 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP +// // 针对多网卡、容器内部署等情况,借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP, +// // 通过调用InetUtils的findFirstNonLoopbackAddress方法获取到第一个非回环地址(即有效的网络IP地址),并设置为执行器绑定的IP地址, +// // 确保执行器能够在复杂网络环境下正确地与XXL-JOB管理端进行通信。 // xxlJobSpringExecutor.setIp(inetUtils.findFirstNonLoopbackAddress().getHostAddress()); +// // 设置执行器监听的端口号,这里采用了项目服务端口号(port)加上1000的方式来确定,避免端口冲突等问题,同时也方便统一管理端口分配。 // xxlJobSpringExecutor.setPort(port + 1000); +// // 设置访问令牌,用于在执行器与XXL-JOB管理端通信时进行身份验证等安全相关操作,这个值就是从配置文件中读取到的accessToken的值。 // xxlJobSpringExecutor.setAccessToken(accessToken); +// // 设置定时任务执行日志的存储路径,方便后续查看任务执行情况以及排查可能出现的问题,这个值就是从配置文件中读取到的logPath的值。 // xxlJobSpringExecutor.setLogPath(logPath); +// // 设置日志保留天数,这里设置为3天,表示定时任务执行日志只会保留最近3天的记录,超过这个天数的旧日志会被自动清理, +// // 这样可以避免日志文件过多占用磁盘空间,同时也能保证在一定时间范围内可以查看历史任务执行情况。 // xxlJobSpringExecutor.setLogRetentionDays(3); // return xxlJobSpringExecutor; // } -} +} \ No newline at end of file