问题描述
在springboot项目里配置了xxl-job2.3.0,但是执行器无法自动注册
yaml配置如下:
xxl:job:admin:enable:trueaddress: http://192.xxx.xxx.xxx:38080/xxl-job-admin
password: admin
username:123456accessToken:executor:appname: test-executor
address:ip:port:9993logpath: /data/applogs/xxl_job/jobHandler
logretentiondays:7
执行器无法自动注册到xxl-job-admin
排查过程
经过debug发现,是spring没有加载xxlJobExecutor这个Bean
debug流程(SpringApplication.run()–>SpringApplication.refreshContext()–>SpringApplication.refresh() -->SpringApplication.finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory))
解决方法
自己配置个xxlJobExecutor Bean
@Configuration@Slf4jpublicclassXxlJobConfig{@Value("${xxl.job.admin.address}")privateString adminAddress;@Value("${xxl.job.executor.address}")privateString address;@Value("${xxl.job.executor.appname}")privateString appName;@Value("${xxl.job.executor.ip}")privateString ip;@Value("${xxl.job.executor.port}")privateint port;@Value("${xxl.job.executor.logpath}")privateString logPath;@Value("${xxl.job.executor.logretentiondays}")privateint logRetentionDays;@Value("${xxl.job.accessToken}")privateString token;@BeanpublicXxlJobSpringExecutorxxlJobExecutor(){
log.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor =newXxlJobSpringExecutor();
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
版权归原作者 就是叫这个名字 所有, 如有侵权,请联系我们删除。