springboot+xxljob
时间: 2023-09-14 12:04:04 浏览: 102
Spring Boot 是一个非常流行的 Java 开发框架,它可以帮助开发者快速构建基于 Spring 框架的应用程序。而 XXL-Job 则是一个分布式任务调度平台,它可以帮助开发者实现定时任务、异步任务等功能。
在使用 Spring Boot 和 XXL-Job 进行开发时,我们可以先通过 XXL-Job 的控制台创建并配置任务,然后在 Spring Boot 应用程序中引用 XXL-Job 的客户端库,通过客户端库调用 XXL-Job 的 API 执行任务。
具体步骤如下:
1. 在 XXL-Job 的控制台中创建任务,并配置任务的参数和调度策略;
2. 在 Spring Boot 应用程序中引入 XXL-Job 的客户端库,并配置 XXL-Job 的调度中心地址和执行器名称;
3. 在 Spring Boot 应用程序中编写任务的业务逻辑,并通过 XXL-Job 的客户端库调用 XXL-Job 的 API 执行任务;
4. 在 XXL-Job 的控制台中查看任务的执行结果和日志。
需要注意的是,在使用 XXL-Job 进行任务调度时,需要确保调度中心和执行器之间可以互相通信,并且任务的执行逻辑需要保证幂等性,以避免因执行失败而导致的重复执行问题。
相关问题
springboot+xxljob实现动态增加有参定时任务
可以通过以下步骤实现动态增加有参定时任务:
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中。
这样,我们就可以动态创建有参定时任务了。
SpringBoot+xxl-job 代码
以下是一个简单的 Spring Boot 集成 xxl-job 的示例代码:
1. 在 pom.xml 中添加依赖:
```xml
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${xxl.job.version}</version>
</dependency>
```
2. 在 application.properties 中添加配置:
```properties
# xxl-job admin 地址
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin
# 执行器名称
xxl.job.executor.appname=myJobExecutor
# 执行器 IP
xxl.job.executor.ip=127.0.0.1
# 执行器端口
xxl.job.executor.port=9999
# 执行器日志路径
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# 执行器日志保留天数
xxl.job.executor.logretentiondays=30
```
3. 创建一个 JobHandler 类:
```java
@Component
public class MyJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) throws Exception {
// 业务逻辑
return ReturnT.SUCCESS;
}
}
```
4. 在启动类中添加 xxl-job 的配置和初始化:
```java
@SpringBootApplication
@EnableXxlJob
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
executor.setAdminAddresses("http://localhost:8080/xxl-job-admin");
executor.setAppName("myJobExecutor");
executor.setIp("127.0.0.1");
executor.setPort(9999);
executor.setLogPath("/data/applogs/xxl-job/jobhandler");
executor.setLogRetentionDays(30);
return executor;
}
}
```
5. 在 xxl-job-admin 中创建一个任务,并指定执行器为 myJobExecutor,JobHandler 类为 MyJobHandler。
以上就是一个简单的 Spring Boot 集成 xxl-job 的示例代码,你可以根据自己的需求进行修改和扩展。
阅读全文