.ExecutorRegistryThread ? ?: >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor-sample', registryValue='http://192.168.133.1:9999/'}, registryResult:ReturnT [code=500, msg=The access token is wrong., content=null]
报错场景:
? ? ? 在使用springboot整合xxl-job中,创建“执行器”向“调度中心注册的时候”提示注册失败,原因是因为token出错。
在解决这个问题的时候需要注意两点
我使用的是最新版本的xxl-job-2.4.0版本,配置如下,
重点是需要加入xxl.job.accessToken: default_token
server:
port: 8082
xxl:
job:
accessToken: default_token
admin:
addresses: http://localhost:8080/xxl-job-admin
executor:
appname: xxl-job-executor-sample
如果你使用的是xxl-job-2.2.x版本配置的时候略,在使用路径上略有不同
xxl:
job:
admin:
accessToken
重点:只配置这点是不行的,还要进行依赖注入
需要在xxl-job的配置类中通过@Value将applicaiton.yml中xxl.job.accessToken的值获取到并注入到
xxlJobSpringExecutor 中。
@Slf4j
@Configuration
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;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appname);
xxlJobSpringExecutor.setAccessToken(accessToken);
/* xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);*/
return xxlJobSpringExecutor;
}
}
其实在更早期的版本中,这个参数不是必选项,但是在最新的版本中考虑到安全性的问题,token变成了默认选项,在不修改调度中心的情况下,执行器必须加上token。
下面是调度器源码的token配置:
所以在使用的时候还需要注意token的名称,调度器和执行器的名称需要匹配。