xxl-job-admin服务搭建
xxl-job需要启动xxl-job-admin服务,启动admin服务有两种方式:
- 下载官网代码,启动admin服务
- 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的输出。