XXL-JOB Spring Boot 开箱即用。
如果你还没有尝试过XXL-JOB,可以去XXL-JOB 官网看下,或者看我写的分布式任务调度XXL-JOB初体验。
- 与SpringBoot无缝集成,实现接近零配置
- 在代码层面实现任务的增删改查和简单管理,方便动态的修改任务
...
<repositories>
<repository>
<snapshots>
<enabled>
false
</enabled>
</snapshots>
<id>
bintray-gcdd1993-maven
</id>
<name>
bintray
</name>
<url>
https://dl.bintray.com/gcdd1993/maven
</url>
</repository>
</repositories>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${springBootVersion}</version>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxlJobVersion}</version>
</dependency>
<dependency>
<groupId>io.github.gcdd1993</groupId>
<artifactId>xxl-job-spring-boot-starter</artifactId>
<version>v0.1.0</version>
</dependency>
repositories {
maven {
url "https://dl.bintray.com/gcdd1993/maven"
}
}
// 为了引入 RestTemplate
compile 'org.springframework.boot:spring-boot-starter-web'
compile "com.xuxueli:xxl-job-core:${xxlJobVersion}"
compile 'io.github.gcdd1993:xxl-job-spring-boot-starter:v0.1.0'
可供配置项如下:
xxl:
job:
enabled: true # 控制是否自动装配
admin-addresses: "http://127.0.0.1:8080/xxl-job-admin"
access-token:
executor:
app-name: "xxl-job-spring-boot-starter-test"
ip:
port: 8989
log-path: "/data/xxl-job/log/job-handler"
log-retention-days: 7
最简配置可以如下:
xxl:
job:
admin-addresses: "http://127.0.0.1:8080/xxl-job-admin"
详细的配置项说明可以在这里找到
如果你不需要在代码层面进行任务的管理,请跳过。
由于使用RestTemplate
模拟Http请求来操作Job,但是没有模拟登录获取Cookie(懒惰),所以需要把相关接口的登录校验去除。
修改com.xxl.job.admin.controller.JobInfoController
,在相关接口上添加注解@PermissionLimit(limit = false)
@RequestMapping("/add")
@ResponseBody
+ @PermissionLimit(limit = false)
public ReturnT<String> add(XxlJobInfo jobInfo) {
return xxlJobService.add(jobInfo);
}
@RequestMapping("/update")
@ResponseBody
+ @PermissionLimit(limit = false)
public ReturnT<String> update(XxlJobInfo jobInfo) {
return xxlJobService.update(jobInfo);
}
@RequestMapping("/remove")
@ResponseBody
+ @PermissionLimit(limit = false)
public ReturnT<String> remove(int id) {
return xxlJobService.remove(id);
}
@RequestMapping("/stop")
@ResponseBody
+ @PermissionLimit(limit = false)
public ReturnT<String> pause(int id) {
return xxlJobService.stop(id);
}
@RequestMapping("/start")
@ResponseBody
+ @PermissionLimit(limit = false)
public ReturnT<String> start(int id) {
return xxlJobService.start(id);
}
登录鉴权相关代码位于com.xxl.job.admin.controller.interceptor
包下,可以说,包结构非常清晰了,一目了然。
做完这一切后打包Admin,搭建Admin端
测试代码可以在这里找到 https://github.com/gcdd1993/xxl-job-spring-boot-starter/blob/master/src/test/