xxl-job快速入门笔记

281 阅读3分钟

xxl-job-admin服务搭建

xxl-job需要启动xxl-job-admin服务,启动admin服务有两种方式:

  1. 下载官网代码,启动admin服务
  2. docker运行admin服务

第一种,下载官网源码

官网教程:www.xuxueli.com/index.html

github链接:github.com/xuxueli/xxl…

gitee链接:gitee.com/xuxueli0323…

下载源码后,在IDEA中开发,我们主要关注两个包:

  • xxl-job-admin
  • xxl-job-executor-samples

在启动xxl-job-admin服务之前,我们需要为了初始化数据库,在源码包里找到该路径下的MySQL建表文件:

/doc/db/tables_xxl_job.sql

数据库初始化完成后进行下一步,

找到xxl-job-admin的配置文件applicaiotn.properties,修改数据库配置信息:

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://mylocalhost:3306/xxl_job?useUnicode=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

配置文件中还有关于报警邮件的设置,本文目的是快速入门,所以这类技术延申点请看官网教程,更加详细。

启动xxl-job-admin服务后,访问该链接:

http://localhost:8080/xxl-job-admin

登陆帐密为:admin/123456

第二种,docker搭建xxl-job-admin环境

准备docker-compose文件:

version: "3"
services:
    mysql:
        network_mode: mynetwork
        container_name: mymysql
        ports:
            - 3306:3306
        restart: always
        volumes:
            - /etc/localtime:/etc/localtime
            - /home/mycontainers/mymysql/data:/data
            - /home/mycontainers/mymysql/mysql:/var/lib/mysql
            - /home/mycontainers/mymysql/conf:/etc/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root
        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --log-bin=/var/lib/mysql/mysql-bin --server-id=1 --binlog-format=ROW --expire_logs_days=7 --max_binlog_size=500M
        image: mysql:5.7.20
    xxl-job-admin:
        container_name: xxl-job-admin
        network_mode: mynetwork
        restart: always
        ports:
            - 8080:8080
        volumes:
            - /home/mycontainers/xxl-job-admin/logs:/data/applogs
        environment:
            PARAMS: "--spring.datasource.url=jdbc:mysql://mymysql:3306/xxl_job?useUnicode=true&useSSL=false&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=root"
        depends_on:
            - mysql
        image: xuxueli/xxl-job-admin:2.3.1

这里注意xxl-job-admin的environment的PARAMS的配置格式和内容,我在这里踩了坑,这里有错误会导致admin服务无法启动

服务启动完成后,我们来写一个最简单的定时任务

xxl-job

官网代码已经提供了sample演示包给我们使用,修改:xxl-job-executor-sample-springboot包的配置文件application.properties:

# 这里对应admin服务的链接
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
​
# 这个名称先记着,后面我们要用到
xxl.job.executor.appname=xxl-job-executor-sample
​
# 绑定用的端口,默认就是9999
xxl.job.executor.port=9999

我们可以去看看XxlJobConfig配置类,这里进行了xxl-job执行器的配置,

最后就是定时任务类的编写,我们看SampleXxlJob类,使用@Component将其注册成bean,然后在指定的函数中用@XxlJob注解修饰,如:

/**
 * 1、简单任务示例(Bean模式)
 */
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
    System.out.println("hello world");
}

启动示例服务,此时定时任务还没有生效,因为我们需要在xxl-job-admin服务中配置这个示例服务:

新增执行器和新建任务

新增执行器

回到xxl-job-admin管理页面,新增执行器:

  • AppName:填写上面示例服务的appname,xxl-job-executor-sample
  • 名称:我们定义一个即可,比如:测试
  • 注册方式:手动录入
  • 机器地址:把xxl-job示例服务的地址输入进去,如:127.0.0.1或者192.168.0.100,然后端口用绑定用的端口,即上面配置的9999,所以最终填写:192.168.0.100:9999

新建任务

配置好执行器,接下来就是新建任务,在任务管理页面新建任务,选择刚刚我们创建的执行器:

  • 任务描述:自定义即可,如测试
  • 负责人:同上
  • 调度配置:我们用CRON,然后CRON表达式用【0/1 * * * * ?】来测试每秒定时任务

其他的不用配置,毕竟我们是快速入门。

保存后在操作模块启动它即可,如顺利,即可在xxl-job示例服务的控制台看到hello world的输出。