一、概述:
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
官网地址:https://www.xuxueli.com/xxl-job/
二、集成SpringBoot
-
引入MAVEN
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${xxl-job-core.version}</version> </dependency>
-
applicaiton.yaml 配置
xxl:
job:
admin:
addresses: http://192.168.0.22:9080/lq-xxljob-client/
accessToken:
executor:
port: 0
appname: ${spring.application.name}
corePoolSize: 5
maxPoolSize: 20
threadkeepAliveSeconds: 60
logPath: logs/lq/job/jobhandler/
logRetentionDays: 30 -
XxlJobConfig 配置
package com.lq.common.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;@Configuration
@Slf4j
public class XxlJobConfig {
@Value("{xxl.job.admin.addresses}") private String adminAddresses; @Value("{xxl.job.executor.appname}")
private String appName;
@Value("{xxl.job.accessToken}") private String accessToken; @Value("{xxl.job.executor.logPath}")
private String logPath;
@Value("{xxl.job.executor.logRetentionDays:30}") private int logRetentionDays; // @Value("{xxl.job.executor.ip}")
// private String ip;
@Value("${xxl.job.executor.port}")
private int port;@Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobSpringExecutor xxlJobExecutor() { log.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appName); // xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; }
}
常见问题:
在使用XXL-JOB时,出现ERROR com.xxl.job.core.util.XxlJobRemotingUtil:143 - Read timed out错误通常表示在客户端与服务器端进行通信时,读操作超时。XXL-JOB是一个分布式任务调度平台,该错误可能由以下几个原因导致:
网络问题:XXL-JOB客户端与服务端之间的网络连接不稳定或延迟过高,导致在指定的超时时间内无法完成数据读取。
解决方案:检查并确保客户端与服务端之间的网络连通性良好,减少网络延迟和丢包率,必要时可适当增加通信超时时间。
服务端响应过慢:XXL-JOB服务端处理请求的速度太慢,未能在设置的Socket读取超时时间内返回结果。
解决方案:优化服务端性能,排查是否存在阻塞、资源耗尽等情况,确保服务端能够快速响应客户端请求。
配置不合理:XXL-JOB客户端或服务端的相关配置(如超时时间)设置得过小,不足以应对正常业务场景下的响应时间。
解决方案:调整相关超时配置参数,使其适应实际的业务需求和网络环境。
请根据实际情况,针对性地进行排查和解决。同时,关注XXL-JOB服务端日志以获取更详细的错误信息,这对于定位问题源头非常有帮助
解决方法:
yaml 里添加配置
corePoolSize: 5
maxPoolSize: 20
threadkeepAliveSeconds: 60