1. @Configuration
  2. public class XxlJobConfig {
  3. private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
  4. @Value("${xxl.job.admin.addresses}")
  5. private String adminAddresses;
  6. @Value("${xxl.job.accessToken}")
  7. private String accessToken;
  8. @Value("${xxl.job.executor.appname}")
  9. private String appname;
  10. @Value("${xxl.job.executor.address}")
  11. private String address;
  12. @Value("${xxl.job.executor.ip}")
  13. private String ip;
  14. @Value("${xxl.job.executor.port}")
  15. private int port;
  16. @Value("${xxl.job.executor.logpath}")
  17. private String logPath;
  18. @Value("${xxl.job.executor.logretentiondays}")
  19. private int logRetentionDays;
  20. @Bean
  21. public XxlJobSpringExecutor xxlJobExecutor() {
  22. logger.info(">>>>>>>>>>> xxl-job config init.");
  23. XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
  24. xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
  25. xxlJobSpringExecutor.setAppname(appname);
  26. xxlJobSpringExecutor.setAddress(address);
  27. xxlJobSpringExecutor.setIp(ip);
  28. xxlJobSpringExecutor.setPort(port);
  29. xxlJobSpringExecutor.setAccessToken(accessToken);
  30. xxlJobSpringExecutor.setLogPath(logPath);
  31. xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
  32. return xxlJobSpringExecutor;
  33. }
  1. # web port
  2. server.port=8081
  3. # no web
  4. #spring.main.web-environment=false
  5. # log config
  6. logging.config=classpath:logback.xml
  7. ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
  8. xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
  9. ### xxl-job, access token
  10. xxl.job.accessToken=default_token
  11. ### xxl-job executor appname
  12. xxl.job.executor.appname=xxl-job-executor-sample
  13. ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
  14. xxl.job.executor.address=
  15. ### xxl-job executor server-info
  16. xxl.job.executor.ip=
  17. xxl.job.executor.port=9999
  18. ### xxl-job executor log-path
  19. xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
  20. ### xxl-job executor log-retention-days
  21. xxl.job.executor.logretentiondays=30

spring容器带动xxl执行器

一、主要逻辑

  1. public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware, SmartInitializingSingleton, DisposableBean {
  2. private static final Logger logger = LoggerFactory.getLogger(XxlJobSpringExecutor.class);
  3. // start
  4. //利用spring容器,带动启动。
  5. //具体执行时机:spring容器单例bean执行完成之后
  6. @Override
  7. public void afterSingletonsInstantiated() {
  8. // init JobHandler Repository
  9. /*initJobHandlerRepository(applicationContext);*/
  10. //进行业务系统中,定时任务对应的方法注册
  11. initJobHandlerMethodRepository(applicationContext);
  12. // refresh GlueFactory
  13. GlueFactory.refreshInstance(1);
  14. // super start
  15. try {
  16. super.start();
  17. } catch (Exception e) {
  18. throw new RuntimeException(e);
  19. }
  20. }
  1. public void start() throws Exception {
  2. //1.初始化业务系统执行日志存放目录。
  3. // 配置:xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
  4. XxlJobFileAppender.initLogPath(logPath);
  5. // init invoker, admin-client
  6. // 2.解析配置的管理端地址(xxl-job-admin),封装为AdminBiz对象。缓存到adminBizList(List)
  7. // 配置:xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
  8. initAdminBizList(adminAddresses, accessToken);
  9. // 3.初始化日志清理线程,并设置清理周期
  10. // 配置:xxl.job.executor.logretentiondays=30
  11. JobLogFileCleanThread.getInstance().start(logRetentionDays);
  12. // 4.初始化触发器回调线程、回调重试线程
  13. TriggerCallbackThread.getInstance().start();
  14. // i5.初始化定时任务执行器服务。接收管理端调用执行器
  15. // 配置:xxl.job.executor.ip:执行器所在服务器ip(不配置,获取业务服务器ip)
  16. // xxl.job.executor.port:执行器端口(不配置,在0-65535中查找可用端口)
  17. // xxl.job.executor.address:管理端通过此地址调用执行器(不配置会利用上面ip、port拼接)
  18. // xxl.job.executor.appname:执行器名称(必输)
  19. initEmbedServer(address, ip, port, appname, accessToken);
  20. }