栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java - XXL-JOB

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java - XXL-JOB

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

            
                com.xuxueli
                xxl-job-core
                2.0.2
            

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

@JobHandler(value="beanJobHandler")
@Component
@Slf4j
public class BeanJobHandler extends IJobHandler implements ApplicationContextAware {

	private ApplicationContext applicationContext;

	@Override
	public ReturnT 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,这里比较简单,只记录了如何使用,如何配置,作为一个参考依据,具体的操作还需要大家亲自实践,有疑问可以在评论区留言,欢迎各位指正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号