SpringBoot整合XxlJob操作实例

技术栈

XxlJob

springBoot

XxlJob介绍

具体的介绍,官网是最详细的,大家可以去官网仔细了解

XxlJob官网

具体操作

首先需要在开发工具中导入XxlJob源码

gitee:源码地址

j加载到idea之后,项目结构如下:

其中 xxl-job-admin是调度中心模块

xxxl-job-core 是具体的功能引用模块

xxl-executor 是执行器的与任务模块

数据库配置

新建数据库 并执行db下的sql文件

执行后的表结构如下:

具体每个表的是存储什么功能的,可以去参考官方文档,里边很详细

配置文件

打开xxl-job-admin模块resource 下的配置文件 配置xxljob 数据库

这里只需要改动数据的配置就可以

改动之后,启动xxl-job-admin 模块,启动成功之后就可以访问调度中心的页面

这个时候页面里边的执行器管理里边是没有 OnLine机械地址的,因为我们的调度器模块还没有起

xxlJob 是将调度中心与执行器 和任务做到解耦的,具体如何做到解耦,大家可以仔细阅读官方文档。

启动xxljob的执行器

接下来我们先来启动 xxljob 源码里边的示例执行器,后边我们再配置我们自己项目里的执行器

启动xxl-job-executor-sample-springboot 项目

启动之后,我们再返回我们的调度中心页面里的执行器管理,发现示例执行器已将上线了Online

开始第一个定时任务

调度中心与执行器模块配置并启动之后,我们开始编写我们的第一个定时任务;

打开xxl-job-executor-sample-springboot下边service包下的SampleXxlJob类

这个里边是xxlJob 源码里边的示例任务,里边主要就是加上一个XxlJob 注解去指定我们的任务名称,也是为了调度中心能够识别到我们的任务示例;

@XxlJob(value = "demo23", init = "init", destroy = "destroy")

主要对这三个注解参数进行说明;

  1. value:该参数用于指定任务的唯一标识,同一个调度中心下的任务不能重复。这个值在整个调度流程中是唯一的,用于标识和区分不同的任务。

  2. init:该参数用于指定任务启动时调用的方法。当一个任务被调度执行时,会先执行init方法进行一些初始化操作,例如加载配置文件、初始化数据库等。在这个方法中,可以编写一些任务启动时需要进行的操作。

  3. destroy:该参数用于指定任务销毁时调用的方法。当一个任务执行完成后,无论成功还是失败,都会执行destroy方法进行一些清理操作,例如关闭数据库连接、释放资源等。在这个方法中,可以编写一些任务销毁时需要进行的操作。

我们还在这个SampleXxlJob类编写我们自己的定时任务;

任务很简单,向控制台输出时间;

  @XxlJob(value = "demo23", init = "init", destroy = "destroy")
    public void demo23() throws Exception {
        String data= LocalDateTime.now()

                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

        System.out.println("--->任务开始执行了" +data
        );
        XxlJobHelper.log("XXL-JOB, Hello World.");
    }

其中  XxlJobHelper.log("XXL-JOB, Hello World.");

是保存日志到日志文件的,日志可以再调度成功之后点击执行日志进行查看,

回到调度中心页面的任务管理,将我们编写的任务添加,并指定执行时间

点击任务管理的新增;

jobHandler 任务处理器就是我们刚才编写的demo23,xxljob注解的value

我们便配置的cron 表达式是没隔10秒执行一次;

我们点击操作下的启动 按钮,我们的任务就开始执行了;

再体验过之后,我们自己新建一个boot 项目将xxljob集成到我们自己的项目来;

xxxlJob集成自己的springboot项目

将我们刚才跑的源码项目使用 maven 中的install命令打包到我们的本地仓库当中;

然后进入仓库找到 com包下的xuxueli

查看自己仓库下xxljob的版本,然后将以来引入到我们自己项目的pom中

我这里的版本依赖是

   <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.4.1-SNAPSHOT</version>
        </dependency>

引入之后我们只需要参考源码里边的的执行器 xxl-job-executor-sample-springboot模块去配置就好了

首先把源码里边config包下的XxlConfig 配置文件复制过来,然后参考源码去配置我们resources

下的配置文件即可;

# web port
server.port=8087
  # no web
  #spring.main.web-environment=false

  # log config
logging.config=classpath:logback.xml


  ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

  ### xxl-job, access token
xxl.job.accessToken=default_token

  ### xxl-job executor appname
xxl.job.executor.appname=testdemo
  ### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
  ### xxl-job executor server-info
xxl.job.executor.ip=
xxl.job.executor.port=9996
  ### xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
  ### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30

这里的
xxl.job.executor.appname=testdemo 我们需要配置我们自己执行器的名字

配置完成之后,执行项目

我这里已经事先新增了一个执行器,这个新增的执行器需要跟我们上一步配置的xxl.job.executor.appname=testdemo名字相同;

页面显示我们的testdemo 执行器已经上线了;

接下来我们可以开始新建任务;

新建任务处理类:

package com.example.xxldemo.demo;

import com.xxl.job.core.handler.annotation.XxlJob;
import org.mybatis.logging.Logger;
import org.mybatis.logging.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * @author LiMingHui
 * @create 2023/9/17 &14:49
 */
@Component
public class demoJob {
    private final static Logger logger = LoggerFactory.getLogger(demoJob.class);

    /**
     * 我的第一个定时器任务
     */
    @XxlJob("firstJobHandler")
    public void funJobHandler() {
        System.out.println("啊~我执行了~~~~");
    }

}

然后再任务管理页面进行新增,需要注意的是执行器一定要选择我们新建项目里边的执行类,也就是testdemo

新建成功之后,启动任务;

springboot 项目集成xxljob 就成功了,博主自己也处于学习阶段,能力有限,希望大家有什么问题可以多进行交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的Spring Boot整合Redis的示例,你可以参考: 1. 添加Redis依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 配置Redis连接信息 在 `application.properties` 文件中添加以下配置: ```properties # Redis服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # Redis连接超时时间(单位:毫秒) spring.redis.timeout=3000 # Redis连接池最大连接数(使用负数表示没有限制) spring.redis.jedis.pool.max-active=8 # Redis连接池最大阻塞等待时间(单位:毫秒,使用负数表示没有限制) spring.redis.jedis.pool.max-wait=-1 # Redis连接池最大空闲连接数 spring.redis.jedis.pool.max-idle=8 # Redis连接池最小空闲连接数 spring.redis.jedis.pool.min-idle=0 ``` 3. 创建RedisTemplate Bean 在Spring Boot中创建RedisTemplate Bean是很简单的,只需要添加以下代码: ```java @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } } ``` 4. 使用RedisTemplate进行数据操作 通过上面的配置,我们已经可以使用RedisTemplate进行数据操作了。下面是一些简单的使用示例: ```java @Autowired private RedisTemplate<String, Object> redisTemplate; public void set(String key, Object value) { redisTemplate.opsForValue().set(key, value); } public Object get(String key) { return redisTemplate.opsForValue().get(key); } public void delete(String key) { redisTemplate.delete(key); } ``` 以上就是Spring Boot整合Redis的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰灰的996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值