springboot+xxljob实现动态增加有参定时任务
时间: 2024-01-13 12:03:28 浏览: 129
springboot集成xxl-job
可以通过以下步骤实现动态增加有参定时任务:
1. 添加依赖
在pom.xml文件中添加xxl-job和spring-boot-starter-quartz的依赖。
```xml
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
2. 配置xxl-job
在application.yml文件中配置xxl-job的相关信息。
```yaml
xxl:
job:
admin:
addresses: http://localhost:8080/xxl-job-admin
executor:
appname: xxl-job-executor-sample
address: http://localhost:9999/xxl-job-executor
ip:
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: -1
```
3. 实现JobHandler
在Spring Boot项目中,我们可以使用@JobHandler注解来声明一个类是一个JobHandler。在JobHandler类中,我们可以实现我们自己的Job逻辑。
```java
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {
@Autowired
private SomeService someService;
@Override
public ReturnT<String> execute(String param) throws Exception {
someService.doSomething(param);
return ReturnT.SUCCESS;
}
}
```
4. 动态创建任务
使用XxlJobExecutor可以动态创建任务。
```java
@Autowired
private XxlJobExecutor xxlJobExecutor;
public void addJob(String jobName, String cron, String param) {
XxlJobInfo jobInfo = new XxlJobInfo();
jobInfo.setJobGroup(1);
jobInfo.setJobDesc(jobName);
jobInfo.setAuthor("admin");
jobInfo.setExecutorRouteStrategy("FIRST");
jobInfo.setGlueType("BEAN");
jobInfo.setExecutorHandler("demoJobHandler");
jobInfo.setExecutorParam(param);
jobInfo.setTriggerStatus(1);
jobInfo.setTriggerCron(cron);
jobInfo.setExecutorFailRetryCount(0);
jobInfo.setExecutorTimeout(0);
xxlJobExecutor.addJob(jobInfo);
}
```
在这个方法中,我们创建了一个XxlJobInfo对象,设置了任务的相关信息,然后使用xxlJobExecutor.addJob方法将任务添加到xxl-job中。
这样,我们就可以动态创建有参定时任务了。
阅读全文