问题描述

在springboot项目里配置了xxl-job2.3.0,但是执行器无法自动注册
yaml配置如下:

xxl:job:admin:enable: trueaddress: http://192.xxx.xxx.xxx:38080/xxl-job-adminpassword: adminusername: 123456accessToken:executor:appname: test-executoraddress:ip:port: 9993logpath: /data/applogs/xxl_job/jobHandlerlogretentiondays: 7

执行器无法自动注册到xxl-job-admin

排查过程

经过debug发现,是spring没有加载xxlJobExecutor这个Bean
debug流程(SpringApplication.run()–>SpringApplication.refreshContext()–>SpringApplication.refresh() –>SpringApplication.finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory))

解决方法

自己配置个xxlJobExecutor Bean

@Configuration@Slf4jpublic class XxlJobConfig {@Value("${xxl.job.admin.address}")private String adminAddress;@Value("${xxl.job.executor.address}")private String address;@Value("${xxl.job.executor.appname}")private String appName;@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;@Value("${xxl.job.accessToken}")private String token;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {log.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddress);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(token);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}

配置完成后,再次debug启动服务,可以看到beanFactory里有xxlJobExecutor Bean,执行器也注册到了xxl-job-admin