- 从xxl-job官网(
https://github.com/xuxueli/xxl-job
或https://gitee.com/xuxueli0323/xxl-job
)下载源文件。 - 解压后文件夹/doc/db/tables_xxl_job.sql,在数据库中创建数据库运行该sql文件,会创建16张表。
- idea打开该项目,主要使用xxl-job-admin子项目,该子项目为任务管理平台,类似于注册中心,其他子项目可忽略。
- 修改xxl-job-admin/resources/application.properties中的数据源,该数据源必须与上面运行sql文件的数据源地址相同,修改email与login配置。
- 启动xxl-job-admin,网址打开
ip:port/xxl-job-admin/
可查看启动状态。 - 新建SpringBoot项目,在xxl-job中是一个执行器。导入依赖
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.0.1</version> </dependency>
- /resources/application.properties中
# 项目端口 server.port=8091 # 日志配置 logging.config=classpath:logback.xml ### xxl-job-admin的地址,步骤5中启动的地址 xxl.job.admin.addresses=http://ip:port/xxl-job-admin ### 项目(执行器)的名称 xxl.job.executor.appname=name ### ip不写自动获取 xxl.job.executor.ip= xxl.job.executor.port=9999 ### xxl-job, access token xxl.job.accessToken= ### xxl-job log path xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler ### xxl-job log retention days xxl.job.executor.logretentiondays=-1
- 添加logback.xml日志(可选)
- 编写配置类
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan(basePackages = "任务所在的package") public class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); //以下@Value注解的都是配置文件中配置的内容 @Value("${xxl.job.admin.addresses}") private String adminAddresses; @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.accessToken}") private String accessToken; @Value("${xxl.job.executor.logpath}") private String logPath; @Value("${xxl.job.executor.logretentiondays}") private int logRetentionDays; @Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobSpringExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); return xxlJobSpringExecutor; } }
- 在配置类中配置的任务所在的package下创建任务类,使用
@JobHandler(value="任务名")
注解以及@Component
注解使该类被Spring发现,继承IJobHandler
类,重写execute()
方法。import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.log.XxlJobLogger; import org.springframework.stereotype.Component; @JobHandler(value = "任务名") @Component public class MyFirstJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String s) throws Exception { XxlJobLogger.log("日志记录内容"); return SUCCESS; } }
XXL-JOB分布式定时任务框架的使用
最新推荐文章于 2024-07-24 11:28:01 发布