XXL-JOB 定时任务在AI大模型中的应用

目录

1. 应用场景

2. 部署 XXL-JOB

3. SpringBoot 集成 XXL-JOB 定时任务代码示例

3.1 添加依赖

3.2 添加配置

3.3 添加执行器到Ioc容器

3.4 添加定时任务

3.5 控制台新增执行器

3.6 控制台添加任务

3.7 控制台开启任务


1. 应用场景

        AI 大模型的调用往往是一个高资源消耗的操作。为了减少资源消耗,限制每个用户每天对 AI 模型的调用次数变得至关重要。在这种场景下,使用定时任务每天重置调用次数是一种常见且有效的解决方案。

2. 部署 XXL-JOB

1.下载项目(使用源码运行)

https://gitee.com/xuxueli0323/xxl-job

2. 执行 SQL:

3. 修改 xxl-job-admin 项目下的数据库连接配置文件

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=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

4. 启动 xxl-job-admin 项目并访问

启动 xxl-job-admin 之后使用,http://localhost:8080/xxl-job-admin/toLogin ,默认登录账户:admin 密码:123456

5. 打包 xxl-job + 快捷启动

得到这个 jar 包后,就可以创建一个执行 jar 包的脚本,例如:xxl-job-start.bat 然后用记事本打开:粘贴执行 jar 包的命令:java -jar xxl-job-admin-2.4.2-SNAPSHOT.jar 。那么下次想要访问 xxl-job 的任务调度中心页面时,直接双击 .bat 文件,再拿着 http://localhost:8080/xxl-job-admin/toLogin 就可以访问了。

3. SpringBoot 集成 XXL-JOB 定时任务代码示例

3.1 添加依赖

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

3.2 添加配置

xxl:
  job:
    executor:
      app-name: ${spring.application.name}
      log-path: ${spring.application.name}/xxl-job
      log-retention-days: 30 # 日志保存天数
    admin:
      address: http://127.0.0.1:8081/xxl-job-admin # 端口号注意使用自己的
    access-token: default_token

3.3 添加执行器到Ioc容器

/**
 * xxl job 配置文件: 将 xxl job 执行器注入到 Ioc 容器中
 *
 * @author helong
 */
@Configuration
public class XxlJobConfig {

    @Value("${xxl.job.admin.address}")
    private String adminAddresses;
    @Value("${xxl.job.executor.app-name}")
    private String appName;
    @Value("${xxl.job.access-token}")
    private String accessToken;
    @Value("${server.port}")
    private int port;
    @Value("${xxl.job.executor.log-path}")
    private String logPath;
    @Value("${xxl.job.executor.log-retention-days}")
    private int logRetentionDays;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setPort(port + 10000);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}

3.4 添加定时任务

/**
 * 存放定时任务
 *
 * @author helong
 */
@Component
public class TimedTask {

    @Resource
    private IUserService userService;
    @Value("${system.user.use-count}")
    private Integer useCount;

    /**
     * 重置所有用户使用次数的定时任务
     */
    @XxlJob("resetAiUseCount")
    public void resetAiUseCount() {
        LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
        wrapper.set(User::getUsecount, useCount);
        boolean result = userService.update(wrapper);
        if (!result) {
            // todo: 调用通知中心通知相关负责人排查和解决问题
        }
    }
}

3.5 控制台新增执行器

之后刷新控制台,启动 Spring Boot 客户端就能看到注册节点:

 

3.6 控制台添加任务

注意:多一个斜杆 / 都可能匹配不上,例如:方法里写的:@XxlJob("/resetAiUseCount"),新增任务写的 resetAiUseCount,此时是匹配不上的。

3.7 控制台开启任务

点击启动,你也可以尝试执行一次,查看调用日志。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Master_hl

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

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

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

打赏作者

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

抵扣说明:

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

余额充值