|
|
|
@ -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;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|