Java - XXL-JOB

说到定时任务想必每一个开发人员都不陌生,开启定时任务的方式也多种多样,如: @Scheduled,Quertz,Elastic-Job, xxl-job等。
xxl-job作为目前业界流行的分布式任务调度框架,受到越来越多的人的信任,越来越多的公司也接入了xxl-job作为定时任务统一调度中心。
想了解xxl-job的可以去github等平台学习。
在这里只介绍下项目中如何使用xxl-job,如何在任务管理界面配置定时任务。
xxl-job包依赖,maven引入

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

代码集成,实现com.xxl.job.core.handler.IJobHandler重写execute(String s)方法制定执行规则。

/**
 * 任务BeanHandler
 * @author test
 */
@JobHandler(value="beanJobHandler")
@Component
@Slf4j
public class BeanJobHandler extends IJobHandler implements ApplicationContextAware {

	private ApplicationContext applicationContext;

	@Override
	public ReturnT<String> execute(String param) throws Exception {
	    log.info("执行任务:{}", param);
		if(StringUtils.isEmpty(param)){
			return new ReturnT<>(ReturnT.FAIL_CODE, "参数不能为空");
		}
		String[] params = StringUtils.split(param, "#");
		if(params == null || params.length< 2){
			return new ReturnT<>(ReturnT.FAIL_CODE, "参数格式不正确,形如:com.test.job.BeanJobHandler#execute");
		}

		String beanClazzName = StringUtils.trimAllWhitespace(params[0]);
		String methodName = StringUtils.trimAllWhitespace(params[1]);

		Class taskBeanClazz = null;
		try {
			taskBeanClazz = Class.forName(beanClazzName );
		}catch (Exception e){
			log.error("执行任务失败:{},原因:Class不存在", param);
			return new ReturnT<>(ReturnT.FAIL_CODE, "类 " + beanClazzName + " 不存在");
		}

		Method taskExecMethod = null;
		try {
			taskExecMethod = taskBeanClazz.getMethod(methodName );
		}catch (Exception e){
			log.error("执行任务失败:{},原因:方法不存在", param);
			return new ReturnT<>(ReturnT.FAIL_CODE, "类 " + beanClazzName + " 中不存在" + methodName + "方法");
		}
		Object object = null;
		try {
			object = applicationContext.getBean(taskBeanClazz);
		}catch (Exception e){
			log.error("执行任务失败:{},原因:Bean不存在", param);
			return new ReturnT<>(ReturnT.FAIL_CODE, "不存在 " + beanClazzName + " 类型的Bean");
		}

		try {
			taskExecMethod.invoke(object);
		}catch (Exception e){
			log.error("执行任务失败:{}", param, e);
			return new ReturnT<>(ReturnT.FAIL_CODE, stackTraceAsString);
		}

		return new ReturnT<>(ReturnT.SUCCESS_CODE, "执行成功");
	}

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) {
		this.applicationContext = applicationContext;
	}
}

管理界面如何配置:

  1. 配置执行器,模块名,模块的ip地址等
  2. 新增任务,配置任务执行规则

新增执行器:
在这里插入图片描述
新增任务:
在这里插入图片描述
注意事项:
3. 执行器: 选择对应的执行器,不然找不到对应的类和方法
4. cron: 定时任务执行规则
5. JobHandler: @JobHandler(value=“beanJobHandler”) 和运行模式需要一致

以上就是java 模块配置xxl-job,这里比较简单,只记录了如何使用,如何配置,作为一个参考依据,具体的操作还需要大家亲自实践,有疑问可以在评论区留言,欢迎各位指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值