写点什么

分布式任务框架:xxl-job 使用问题整理

发布于: 2021 年 02 月 16 日
分布式任务框架:xxl-job使用问题整理

一 问题描述

部署方式:源码部署

使用阶段: 本地调试

已进行了执行器配置,因为自动注册总是失败,所以选择手动录入:


问题:

手动录入执行器 及其地址,保存后,执行任务时报错。信息如下:



二 分析过程

这个问题很奇怪,而找了很多资料也没有能正确解决。查到的有以下几种:

1、忘记配置执行器地址,

如前文所示,已经完成配置,排除;

2、域名/ip 地址配置

按照 xxl-job 文档对照,查看自己本地工程的配置,确认无误。


查到的资料都不可靠,放弃。直接从日志查找,捋代码确认位置:

xxl-job-executor-sample-springboot.log

日志中可见,注册相关步骤,会请求链接: http://127.0.0.1:9998/run,也看到是这个接口报错。(404)。那么就好办了,我们回到代码,找到这个方法,看是什么原因导致了这个问题。

代码位置:xxl-job-executor-samples => xxl-job-executor-sample-springboot => com.xxl.job.executor.mvc.controller.IndexController.java

目前代码如下:



可以看到,代码被注释掉了。。。所以才会 404

三 解决方法

取消注释,我本地把这段代码修改如下:

import com.xxl.job.core.biz.model.ReturnT;import groovy.util.logging.Slf4j;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
@Slf4j@Controller@EnableAutoConfigurationpublic class IndexController {
Logger logger = LoggerFactory.getLogger(IndexController.class); @RequestMapping("/run") @ResponseBody public ReturnT<String> index(HttpServletRequest request, Model model) { logger.info("run request:{}", request); logger.info("run model:{}", model);
return new ReturnT<String>(ReturnT.FAIL_CODE, "job is running"); }
}
复制代码


重新启动,配置、执行成功。

四 总结

开源工具的好处是可以直接看到源码,并根据源码来学习优秀的代码风格和设计方式。不过,开源也意味着可能会遇到各种各样的问题,而社区的问题未必都能够覆盖,紧急时需要我们自己尽可能快地定位和解决问题,避免影响整体进度和线上环境。所以,简单的拿来主义是不可以的,切记。


附录:

XXL-JOB官方文档

XXL-JOB 项目地址:https://github.com/xuxueli/xxl-job

发布于: 2021 年 02 月 16 日阅读数: 27
用户头像

磨炼中成长,痛苦中前行 2017.10.22 加入

微信公众号【程序员架构进阶】。多年项目实践,架构设计经验。曲折中向前,分享经验和教训

评论

发布
暂无评论
分布式任务框架:xxl-job使用问题整理