XXL-JOB二次开发嵌入自己的项目

1.下载XXL-JOB进行启动

1. 拉取代码Gitee
2.创建数据库

/xxl-job/doc/db/tables_xxl_job.sql

3.调整admin数据库配

/xxl-job/xxl-job-admin/src/main/resources/application.properties

4.启动admin项目 http://localhost:8080/xxl-job-admin 默认登录账号 “admin/123456”
在这里插入图片描述

2.创建一个自己的项目包

1.拷贝admin中的代码
在这里插入图片描述
2.重命名Dao为mapper
在这里插入图片描述
3.将model移入entity 删除 old包
在这里插入图片描述
4.修改实体类后缀为Entity 并使用lombok的注解
在这里插入图片描述
5.移除util中的FtlUtil
在这里插入图片描述
6.配置yml 配置说明

spring:
  #邮箱配置
  mail:
    host: smtp.qq.com
    port: 25
    username: xxx@qq.com
    from: xxx@qq.com
    password: xxx
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory

#xxl-job的配置 https://www.xuxueli.com/xxl-job/#%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E%EF%BC%9A
xxl:
  job:
    # 调度中心通讯TOKEN [选填]:非空时启用;
    accessToken: ''
    # 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
    i18n: 'zh_CN'
    #调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
    logretentiondays: 30
    # 调度线程池最大线程配置【必填】
    triggerpool:
      fast:
        max: 200
      slow:
        max: 200

7.拷贝i18n配置
在这里插入图片描述
8.核心controller内容不能修改

	@ResponseBody
	//@Log("XxlJob通信API")
	@RequestMapping("/api/{uri}")
	//@NotDesUrlResponse(msg = "XxlJob通信API禁止加密")
	public ReturnT<String> api(HttpServletRequest request, @PathVariable("uri") String uri, @RequestBody(required = false) String data) {

		// valid
		if (!"POST".equalsIgnoreCase(request.getMethod())) {
			return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, HttpMethod not support.");
		}
		if (uri==null || uri.trim().length()==0) {
			return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping empty.");
		}
		if (XxlJobConfig.getAdminConfig().getAccessToken()!=null
				&& XxlJobConfig.getAdminConfig().getAccessToken().trim().length()>0
				&& !XxlJobConfig.getAdminConfig().getAccessToken().equals(request.getHeader(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN))) {
			return new ReturnT<String>(ReturnT.FAIL_CODE, "The access token is wrong.");
		}

		// services mapping
		if ("callback".equals(uri)) {
			List<HandleCallbackParam> callbackParamList = GsonTool.fromJson(data, List.class, HandleCallbackParam.class);
			return adminBiz.callback(callbackParamList);
		} else if ("registry".equals(uri)) {
			RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
			return adminBiz.registry(registryParam);
		} else if ("registryRemove".equals(uri)) {
			RegistryParam registryParam = GsonTool.fromJson(data, RegistryParam.class);
			return adminBiz.registryRemove(registryParam);
		} else {
			return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping("+ uri +") not found.");
		}
	}
3.创建执行器

1.创建新执行器
在这里插入图片描述
2.项目配置xxl-job
appname:为执行器名称 上方配置的

#xxl-job配置
xxl:
  job:
    admin:
      #调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
      addresses: http://127.0.0.1:8080/xxljob
    #执行器通讯TOKEN [选填]:非空时启用;
    accessToken:
    executor:
      #执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
      appname: text
      #执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
      address:
      #执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
      ip:
      #执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
      port: 9999
      #执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: /data/applogs/xxl-job/jobhandler
      #执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      logretentiondays: 30

3.创建配置类初始化xxl-job配置

@RefreshScope
@Configuration
public class XxlJobConfig {
    private final Logger logger = LoggerFactory.getLogger(XxlJobConfig .class);

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

    @Value("${xxl.job.executor.address}")
    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;

    @Bean
    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;
    }
}

4.创建task

@Component
public class TestTask {
    @XxlJob("testTask")
    public ReturnT<String> pokemonEsKeywordsTask(String param){
        XxlJobHelper.log("XXL-JOB, Hello World.");
        return ReturnT.SUCCESS;
    }
}

5.页面创建任务
在这里插入图片描述

4.内嵌前端

1.前端页面重新搭建
2.页面请求控制器重新调整权限

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
xxl-job 是一个分布式任务调度平台,具有简单易用、高可靠、高扩展性等优点,已被广泛应用于企业生产环境中。它支持各种任务类型(Java、Shell、Python、CMD、SQL等),并为用户提供了丰富的任务管理和监控功能,允许用户自定义任务参数、执行器配置、任务路由等。 如果需要对 xxl-job 进行二次开发,可以充分利用 xxl-job 提供的开放接口,如 REST API、JobHandler 接口、JobLogger 接口等,来实现自己的定制化需求。例如,可以通过 REST API 接口实现自定义的任务调度策略、任务路由规则等;通过 JobHandler 接口实现新的任务类型、任务参数解析等;通过 JobLogger 接口实现自定义日志输出格式。同时,xxl-job 还提供了丰富的源码注释和文档,方便用户进行二次开发和定制化。 除此之外,如果需要扩展 xxl-job 功能,可以参考 xxl-job 的源码进行修改。xxl-job 的源码托管在 Github 上,用户可以自行下载并进行修改。在扩展功能的过程中,需要注意遵循 xxl-job 的编码规范,并进行充分的测试和验证,以确保扩展功能的稳定性和可靠性。 总之,xxl-job 是一个开源的分布式任务调度平台,提供了丰富的接口和文档支持,为用户提供了二次开发和定制化的可能性。如果需要对 xxl-job 进行二次开发,还需要充分理解 xxl-job 的设计原理和架构特点,以便更好地发挥其优势,满足自己的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小草王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值