环境
使用源码编译安装,要有 JDK 及 Maven。
安装
克隆源码并编译,
git clone https://gitee.com/xuxueli0323/xxl-job.git
cd xxl-job
由于需要连接数据库,修改配置 xxl-job-admin/src/main/resources/application.properties
,
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=UMd8qAXoE-mm
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
接着创建数据库及表,
# pwd
/root/xxl-job
# mysql -uroot -p"UMd8qAXoE-mm" < doc/db/tables_xxl_job.sql
开始编译,
# mvn clean package
[INFO] Scanning for projects...
省略很多输出
[INFO] ----------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] xxl-job ................................... SUCCESS [0.091s]
[INFO] xxl-job-core .............................. SUCCESS [1.478s]
[INFO] xxl-job-admin ............................. SUCCESS [2.836s]
[INFO] xxl-job-executor-samples .................. SUCCESS [0.002s]
[INFO] xxl-job-executor-sample-frameless ......... SUCCESS [0.617s]
[INFO] xxl-job-executor-sample-springboot ........ SUCCESS [0.611s]
[INFO] ----------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ----------------------------------------------------------------
[INFO] Total time: 5.900s
[INFO] Finished at: Tue Jul 13 14:33:59 CST 2021
[INFO] Final Memory: 50M/448M
[INFO] ----------------------------------------------------------------
编译安装完成就可以启动了,构建物为:
# ls xxl-job-admin/target/xxl-job-admin-2.3.0.jar
xxl-job-admin/target/xxl-job-admin-2.3.0.jar
接着启动服务,
# java -jar -server xxl-job-admin/target/xxl-job-admin-2.3.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.2)
14:38:57.170 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_292 on liuchuanchuan-wbg-5.novalocal with PID 20746 (/root/xxl-job/xxl-job-admin/target/xxl-job-admin-2.3.0.jar started by root in /root/xxl-job)
14:38:57.176 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - No active profile set, falling back to default profiles: default
14:38:58.854 logback [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
14:38:58.865 logback [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
14:38:58.866 logback [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
14:38:58.866 logback [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.41]
14:38:58.922 logback [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
14:38:58.923 logback [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1418 ms
14:38:59.700 logback [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
14:38:59.722 logback [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
14:38:59.896 logback [main] INFO o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
14:39:00.078 logback [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
14:39:00.380 logback [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
14:39:00.765 logback [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 2 endpoint(s) beneath base path '/actuator'
14:39:00.806 logback [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8080"]
14:39:00.841 logback [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
14:39:00.842 logback [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
14:39:00.844 logback [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
14:39:00.845 logback [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path '/xxl-job-admin'
14:39:00.864 logback [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 9.357 seconds (JVM running for 9.98)
14:39:04.000 logback [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
通过控制台的日志输出,可以看到 xxl-job 已经启动并且监听了 8080 端口并且访问路径为 /xxl-job-admin
,默认的用户名及密码为:admin/123456
。
简单使用
浏览器登录,界面如下:
启动自带的 JobHandler
运行 Shell 脚本
创建一个任务,在 WebIDE 上新增代码,
#!/bin/bash
echo "xxl-job: hello shell"
echo "脚本位置:$0"
echo "任务参数:$1"
echo "分片序号 = $2"
echo "分片总数 = $3"
echo "Good bye!"
touch /tmp/hello # 创建文件并更新时间戳
exit 0
查看系统上的文件时间戳,
[root@node01 xxl-job-executor-sample-springboot]# ll /tmp/hello
-rw-r--r-- 1 root root 0 Jul 15 10:05 /tmp/hello
[root@node01 xxl-job-executor-sample-springboot]# ll /tmp/hello
-rw-r--r-- 1 root root 0 Jul 15 10:05 /tmp/hello
[root@node01 xxl-job-executor-sample-springboot]# ll /tmp/hello
-rw-r--r-- 1 root root 0 Jul 15 10:06 /tmp/hello
[root@node01 xxl-job-executor-sample-springboot]# ll /tmp/hello
-rw-r--r-- 1 root root 0 Jul 15 10:06 /tmp/hello
可以在 WEB 界面上查看执行日志,
2021-07-15 10:05:00 [com.xxl.job.core.thread.JobThread#run]-[130]-[Thread-10]
----------- xxl-job job execute start -----------
----------- Param:
2021-07-15 10:05:00 [com.xxl.job.core.handler.impl.ScriptJobHandler#execute]-[80]-[Thread-10] ----------- script file:/data/applogs/xxl-job/jobhandler/gluesource/6_1626314395000.sh -----------
xxl-job: hello shell
脚本位置:/data/applogs/xxl-job/jobhandler/gluesource/6_1626314395000.sh
任务参数:
分片序号 = 0
分片总数 = 1
Good bye!
2021-07-15 10:05:00 [com.xxl.job.core.thread.JobThread#run]-[176]-[Thread-10]
----------- xxl-job job execute end(finish) -----------
----------- Result: handleCode=200, handleMsg = null
2021-07-15 10:05:00 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread]
----------- xxl-job job callback finish.
[Load Log Finish]
可以使用 Nginx 进行反向代理,配置如下:
server {
listen 8787;
# server_name nacos.lavenliu.cn;
server_name 11.22.33.44;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.16.2.12:8787;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}