代码编织梦想

开箱即用的xxl-job任务后台动态管理

背景

由于最近要设计开发一个通用对账系统,不同的对账参与方的对账节点节点不一

  • 例如:

  • 资金对账:

    ○ 微信:可能是每天7点以后,才能下载前1天的对账单

    ○ 通联:可能是每天8点以后,才能下载前1天的对账单

  • 业务对账:不同的业务动作,需灵活配置对账时间节点

所以采用了xxl-job来实现此功能,但不可能每接入一个对账业务方,都去xxl-job后台手动建1个任务。

所以采用如下方案:所有对账任务采用同1个执行器,不同的对账场景使用不同的执行任务,并以任务参数进行区分,使用xxl-job-admin暴露的后台API动态进行任务添加、修改、启动、停止等功能。这样当新接入1个对账业务方,只需要在新加配置时,在后台动态新增一个xxl-job执行任务,就可以实现对账调度
在这里插入图片描述

在网上搜索,也有比较多的博客涉及到如何访问xxl-job-admin的接口,但要么代码不全,要么缺乏扩展性,为了接入简单,开箱即用,封装了一个starter,帮助有同样需求的同学快速投入项目使用

功能

  • xxl-job模拟登录
  • xxl-job执行器:动态新增、动态注册、动态查询
  • xxl-job执行任务:动态添加、动态更新、动态启动、动态停止

特性

  • xxl-job-admin的API需要登录才能访问,本项目中进行了模拟登录,获取到cookie,然后携带cookie访问API
  • 对接口访问进行统一封装,扩展性强
  • 将工程封装成spring-boot-starter,开箱即用
  • 本项目对接的xxl-job接口,都进行了单元测试,单元测试案例见com.chuanxi.wow.xxl.job.task#XxlJobTest

如何使用

1、下载源码

2、打成jar,放入maven仓库

3、引用

<!--例如:-->
<dependency>
    <groupId>com.mading</groupId>
    <artifactId>xxl-job-task-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

4、配置xxl-job

# 前缀可自行在XxlJobProperties中修改
xxl.adminAddresses=http://127.0.0.1:8080/xxl-job-admin
xxl.appname=${spring.application.name}
xxl.logretentiondays=30
xxl.port=9999
xxl.accessToken=289d5e0b-e83b-40a1-87ec-fd7b2335f15c

5、使用

@Service
public class DemoService {

    @Autowired
    private XxlJobProperties xxlJobProperties;
    @Autowired
    private XxlJobClient xxlJobClient;

    // 执行器id
    private static final Integer jobGroup = 3;

    public String dynamicAddJob() {
        JobAddRequest request = new JobAddRequest();
        request.setJobGroup(jobGroup)
                .setJobDesc("支付中心-微信对账")
                .setJobCron("0 0/1 * * * ?")
                .setExecutorHandler("checkAccountTask")
                .setExecutorParam("paycenter-wx")
                .setAuthor("马丁丁");
        return xxlJobClient.execute(request);
    }

仓库地址:gitee仓库
备注:若链接失效,在gitee上搜索xxl-job-task-spring-boot-starter即可

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MDW12345/article/details/130824613

Spring Boot整合XXL-JOB分布式任务调度系统-爱代码爱编程

一、获取XXL-JOB分布式任务调度系统项目源代码 1、项目地址:https://github.com/xuxueli/xxl-job 2、使用git克隆至本地:$ git clone https://github.com/xuxueli/xxl-job.git 二、整合 1、 在IDEA上创建一个Maven工程,命名为xxl-job-demo ① 点击

Java设计流程执行器_使用xxl-job-spring-boot-starter开发xxl-job执行器-爱代码爱编程

简述 本文简单描述如何使用xxl-job-spring-boot-starter开发xxl-job的执行器服务。 开发步骤 添加依赖 创建一个Spring Boot项目 添加仓库配置 centychen-private-repo https://gitee.com/centy/maven/raw/master 添加依赖包 org.sp

XXL-JOB任务调度中心搭建-爱代码爱编程

1.xxl-job下载地址gitee:https://gitee.com/xuxueli0323/xxl-job/tree/2.3.0​​​​​​ 2.下载完后将下载的压缩包解压兵导入IDEA中,其目录机构如下 3.启动xxl-job-admin项目(该项目是一个springboot项目,启动main就可以了)  4.也可以通过命令启动,将下载好

springboot定时任务 - 开箱即用分布式任务框架xxl-job_pdai的博客-爱代码爱编程

除了前文介绍的ElasticJob,xxl-job在很多中小公司有着应用(虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能相对完善性,这是中小团队采用的主要原因

springboot结合xxl-job实现定时任务-爱代码爱编程

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoo

任务调度-爱代码爱编程

任务调度 七个位置(springtask只支持6位) 0 0 10 14 5 ? 秒 分 时 日 月 周 年 符号: *(任意) ?(放弃只会出现在日或周的位置上) m-n(从m到n) m /n(从m开始每隔n)

【xxl-爱代码爱编程

1. 概述 前面我们已经讲解了,如何使用Quartz来进行定时任务,包括表的含义,以及我们如何去开启和暂停关闭一个定时任务,这里为什么又要用xxl-job来执行定时任务呢?因为xxl-job给我们提供了可视化的界面,而且通

分布式定时任务之xxl-爱代码爱编程

分布式定时任务之XXL-JOB的配置使用 XXL-JOB概述XXL-JOB快速入门1.配置部署“调度中心”2.创建执行器项目3.配置执行器项目4.配置执行器组件5.开发Job方法6.项目结构 调度中心的使