之前通过github拉取xxl-job到本地启动,已经验证完了,主要要记住以下几个步骤:
1.拉取代码
GitHub地址:https://github.com/xuxueli/xxl-job
Gitee地址:https://gitee.com/xuxueli0323/xxl-job
2.idea打开,找到tables_xxl_job.sql文件,在mysql库中执行
执行完,会生成以下表:
打开xxl-job-admin模块,在application.properties中进行后台的配置,修改数据源和提示企业邮箱。
其中数据库地址要加上时区属性,否则乱码
举例:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&serverTimezone=UTC
以上是本地正常启动或者通过jar包启动,例如 java -jar xxxx.jar
---------------------------------------------------分割线---------------------------------------------------------------
下面介绍docker启动xxl-job
1.拉取镜像
docker pull xuxueli/xxl-job-admin:2.4.0
2.启动
如果是linux服务,执行命令:
docker run -di \
-e PARAMS="--spring.datasource.url=jdbc:mysql://ip:端口/xxl_job?useSSL=false&Unicode=true&characterEncoding=UTF-8" \
-e PARAMS="--spring.datasource.username=root" \
-e PARAMS="--spring.datasource.password=123456" \
-e PARAMS="--spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver" \
-e PARAMS="--xxl.job.accessToken=mq.test" \
-p 9001:8080 \
-v /usr/local/src/docker/xxl-job:/data/applogs \
--name xxl-job \
--privileged=true \
xuxueli/xxl-job-admin:2.4.0
Windows版docker执行以下命令:
docker run -di -e PARAMS="--spring.datasource.url=jdbc:mysql://宿主机IP:3307/xxl_job?Unicode=true&characterEncoding=UTF-8&useSSL=false --spring.datasource.username=root --spring.datasource.password=123456 --spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver --xxl.job.accessToken=mq.test" -p 9001:8080 -v /usr/local/src/docker/xxl-job:/data/applogs --name xxl-job --privileged=true xuxueli/xxl-job-admin:2.4.0
下面来聊一下踩的坑:
1.我的环境是windows docker 启动了一个mysql容器 端口3306映射本地3307;启动了xxl-job 容器端口8080映射本地9001;我在docker启动命令中使用的jdbc:mysql:127.0.0.1:3307,xxl-job容器启动了,但是服务启动失败,报错日志:
备注:可以用命令docker logs --since 2m xxl-job 查看容器最近2分钟内的运行日志(xxl-job容器名称)
发现没有连上mysql。
原因是:
参数中,jdbc:mysql://127.0.0.1:3307/xxl_job
中的 127.0.0.1
指向的是 xxl-job 容器本身,而不是宿主机。为了使 xxl-job 容器能够连接到宿主机上运行的 MySQL 服务器,您应该使用宿主机的 IP 地址,而不是 127.0.0.1
。
修改完成,即可。
注意:
上述启动命令中设置了accessToken,那么我们应用服务配置也要修改,否则是报错。
配置:
如果不改,则启动时会报错:
15:06:41.199 logback [Thread-5] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9999
15:06:41.230 logback [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor-sample', registryValue='http://172.19.18.45:9999/'}, registryResult:ReturnT [code=500, msg=The access token is wrong., content=null]