xxl-job让定时任务更优雅

一、xxl-job确实一个比较好的定时任务管理软件,我特别喜欢它的界面,而且如果嵌入公司内部项目管理系统也是非常简单,记录下学习路径。
1、xuxueli老师的xxl-job的git地址,下载下来研究,里面主要关注xxl-job-admin和doc里面的sql脚本。

https://github.com/xuxueli/xxl-job

xxl-job让定时任务更优雅_第1张图片
2、本地访问地址:http://localhost:8080/xxl-job-admin/,登录用户名:admin,密码123456就可以看到精美首页
xxl-job让定时任务更优雅_第2张图片
3、业务应用配置里面加入示例,主要参数:部署的xxl-job应用地址,端口
xxl-job让定时任务更优雅_第3张图片
4、xxl的配置

@Configuration
public class XxlJobConfig {

	@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 XxlJobExecutor xxlJobExecutor() {
		XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
		xxlJobExecutor.setAdminAddresses(adminAddresses);
		xxlJobExecutor.setAppName(appName);
		xxlJobExecutor.setIp(ip);
		xxlJobExecutor.setPort(port);
		xxlJobExecutor.setAccessToken(accessToken);
		xxlJobExecutor.setLogPath(logPath);
		xxlJobExecutor.setLogRetentionDays(logRetentionDays);
		return xxlJobExecutor;
	}
}

5、pom文件及执行定时任务的类,需要继承IJobHandler,通过注解@JobHandler(value = " ")设置,value的值对应新增任务的JobHandler值。

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.2.0</version>
</dependency>

xxl-job让定时任务更优雅_第4张图片
6、新增执行器,AppName配置文件里面的xxl.job.executor.appname,注册方式由2种,我一般是先自动注册,然后改成手动注册。如果机器地址是多个,通过逗号分隔。
xxl-job让定时任务更优雅_第5张图片
7、接下来是新增任务,执行器是选择上面刚创建的,路由策略比较多,我一般就用到一个是分片广播,就是涉及一个定时任务触发多台服务器执行,其余路由策略就是第一个或者故障转移,其余我暂时没需求。任务参数虽然是非必填,但是我还是经常用到,可以在后台execute方法中接收一个参数,通过这里的任务参数传入,可以在代码中处理配置有参数的情况,主要用途是:解决某些异常情况的后门。JobHandler则是上面5所说,阻塞处理策略和失败处理策略我一般随便选,我目前的需求和这里并不冲突,有一点可能需要说明:定时一旦执行,即使我们点击暂停,执行实际业务逻辑代码是不会停止的—以上是我实践获取,如果有差异,后续我会发现并更新。
xxl-job让定时任务更优雅_第6张图片
8、我任务的xxl-job的主线已经说完,当然还有些支线没说,其实很简单,如果真正使用到的时候则自然明白。

你可能感兴趣的:(#,java)