在集成 XXL-job
前,首先确保部署了 XXL-job
的 admin 服务, 如果还没有部署的话请参照 Docker安装部署XXL-Job 将 XXL-job 部署起来.
此时, XXL-job 已经部署好了, 下来一步一步的来集成 XXL-job.
首先引入依赖
<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${project.parent.version}</version> </dependency>
配置信息
# xxl-job xxl: job: admin: addresses: http://xxml-job admin服务IP:服务端口/xxl-job-admin/ # 任务中心地址 accessToken: executor: appname: my-job # 任务名称 见名之意且唯一 address: ip: port: 19999 #指定任务工程与admin工程心跳检测端口 注意该端口不是你的服务的端口,是特别指定的端口 logpath: ./logs/xxl-job/stock-job/ # 日志文件路径 logretentiondays: 30 # 日志文件保存天数
配置类
配置完毕后,工程底层通过 XxlJobConfig
配置类加载配置信息,实现 xxljob
相关资源的初始化工作:
加入如下配置类:
@Configuration public class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String adminAddresses; @Value("${xxl.job.accessToken}") private String accessToken; @Value("${xxl.job.executor.appname}") private String appname; @Value("${xxl.job.executor.address}") private String address; @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; /** Spring整合XXL-JOB任务执行器 * 该执行器可调度当前工程下的一些子任务 */ @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppname(appname); xxlJobSpringExecutor.setAddress(address); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } }
定义定时任务执行方法
@Slf4j @Component public class SampleXxlJob { /** * 1、简单任务示例(Bean模式) */ @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { // 打印时间 System.out.println("hello XXL-job....." + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } }
配置任务执行器
注意 AppName 就是在配置文件中配置的.
ip是自己服务的ip,注意不是xxljob服务的ip. 端口是配置的心跳监听的端口.
配置任务执行计划
点击上面的操作开启任务
后端就会看到任务执行了:
至此, 你的SpringBoot项目就集成了XXL-job了.