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

news2024/9/21 14:32:11

目录

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 控制台开启任务

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Linux 系统上安装 GCC 编译器(不同发行版)

GCC&#xff08;GNU Compiler Collection&#xff09;是一个功能强大的开源编译器&#xff0c;支持多种编程语言&#xff0c;如 C、C、Fortran 等。在这篇博客中&#xff0c;我们将介绍如何在不同的 Linux 发行版上安装 GCC 编译器。 一、在 Ubuntu 上安装 GCC 1. 更新软件包…

numpy(史上最全)

目录 numpy简介 性能对比 ndarray属性 numpy中的数组&#xff1a; 几个创建的函数&#xff1a; 1) np.ones(shape, dtypeNone, orderC) shape: 形状&#xff0c;使用元组表示 2) np.zeros(shape, dtypefloat, orderC) 3) np.full(shape, fill_value, dtypeNone, orderC)…

阿里国际站运营工具 :一键提升你的全球竞争力!

在当今全球化的商业环境中&#xff0c;阿里巴巴国际站作为全球知名的B2B电子商务平台&#xff0c;为无数企业提供了一个展示产品、拓展国际市场的重要渠道。随着越来越多的企业加入到这个平台&#xff0c;如何在激烈的竞争中脱颖而出&#xff0c;成为了每个外贸人员必须面对的挑…

【BUG】已解决:ModuleNotFoundError: No module named ‘requests‘

ModuleNotFoundError: No module named ‘requests‘ 目录 ModuleNotFoundError: No module named ‘requests‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&a…

java-selenium 截取界面验证码图片并对图片文本进行识别

参考链接 1、需要下载Tesseract工具并配置环境变量&#xff0c;步骤如下 Tesseract-OCR 下载安装和使用_tesseract-ocr下载-CSDN博客 2、需要在IDEA中导入tess4j 包&#xff1b;在pom.xml文件中输入如下内容 <!--导入Tesseract 用于识别验证码--><dependency>&l…

SpringSecurity通用权限管理系统

1、介绍 权限管理是所有后台系统都会涉及的一个重要组成部分&#xff0c;而权限管理的核心流程是相似的&#xff0c;如果每个后台单独开发一套权限管理系统&#xff0c;就是重复造轮子&#xff0c;是人力的极大浪费&#xff0c;本项目就是针对这个问题&#xff0c;提供了一套通…

堆的相关特点

一.建堆的两种方法 给定一个数组&#xff0c;其中数组里面的元素个数是n个如何能够把这个数组建立成为一个堆&#xff0c;今天探讨两种方法&#xff0c;分别是向上调整法和向下调整法&#xff0c;分别探讨他们的时间复杂度 向上调整法&#xff08;以小堆为例&#xff09; 回…

【好玩的经典游戏】Docker环境下部署赛车小游戏

【好玩的经典游戏】Docker环境下部署赛车小游戏 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建容器镜像4.1 下…

解决Visual studio内报错信息:MSB8036:找不到 Windows SDK 版本问题

问题描述&#xff1a; 找不到WindowsSDK版本&#xff0c;请安装所需版本的Windows SDK&#xff0c;或者在项目属性页中通过右键单击解决方案并选择“重定解决方案目标”来更改SDK版本。 首先&#xff0c;如果你尝试了以下两种方法&#xff1a; &#xff08;1&#xff09;重新…

深入理解Java 8的流式API:简化代码,提升效率

文章目录 深入理解Java 8的流式API&#xff1a;简化代码&#xff0c;提升效率一、流 Stream二、Int | Long | Double Stream三、收集器 Collectors 深入理解Java 8的流式API&#xff1a;简化代码&#xff0c;提升效率 Java 8引入了Stream API&#xff0c;它提供了一种新的抽象&…

String 和StringBuilder字符串操作快慢的举例比较

System.currentTimeMillis(); //当前时间与1970年1月1日午夜UTC之间的毫秒差。public class HelloWorld {public static void main(String[] args) {String s1 "";StringBuilder s2 new StringBuilder("");long time System.currentTimeMillis();long s…

Django Web框架~后台美化

1、执行命令 pip install django-simpleui 2、注册simpleui到项目中 3、访问http://127.0.0.1/admin/ 4、设置中文 5、收集admin静态文件 python manage.py collectstatic

Zookeeper入门篇,了解ZK存储特点

Zookeeper入门篇&#xff0c;了解ZK存储特点 前言一、为什么要用 Zookeeper&#xff1f;二、Zookeeper存储特色1. 树状结构2. 节点类型 三、存储位置1. 内存存储1. DataTree2. DataNode 2. 硬盘存储1. 事务日志2. 快照 前言 继上次说完 Zookeeper 的安装后&#xff0c;已经过去…

设计模式学习[2]---策略模式+简单工厂回顾

文章目录 前言1.简单工厂模式回顾2.策略模式3.策略模式简单工厂的结合总结 前言 上一篇讲到简单工厂模式。 在我的理解中工厂的存在就是&#xff0c;为了实例化对象。根据不同条件实例化不同的对象的作用。 这篇博客写的策略模式&#xff0c;可以说是把这个根据不同情况实例化…

pdf2docx - pdf 提取内容转 docx

文章目录 一、关于 pdf2docx主要功能限制 二、安装1、 PyPI2、从remote安装3、从源码安装4、卸载 三、转化 PDF例 1: convert all pages例 2: 转换指定页面例 3: multi-Processing例 4: 转换加密的pdf 四、提取表格五、命令行交互1、按页面范围2、按页码3、Multi-Processing 六…

使用Vue.js集成百度地图WebGL实现3D地图应用

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用Vue.js集成百度地图WebGL实现3D地图应用 应用场景介绍 本代码用于在Vue.js应用程序中集成百度地图WebGL&#xff0c;实现3D地图的可视化展示。它可以应用于各种场景&#xff0c;例如&#xff1a; 城市规…

助燃新质生产力,魔珐科技亮相IMC2024制造业数字科技大会展示有言AIGC视频工具价值

2024年7月19日&#xff0c;IMC2024第八届制造业数字科技大会在上海盛大开幕&#xff0c;本次大会以《向“智”而行》为主题&#xff0c;250智能制造行业数字化转型企业、行业领军者及实践者共聚一堂&#xff0c;共同助力企业增强技术“硬核力”&#xff0c;为新质生产力蓄势赋能…

【SpringBoot3】全局异常处理

【SpringBoot3】全局异常处理 一、全局异常处理器step1&#xff1a;创建收入数字的页面step2:创建控制器&#xff0c;计算两个整数相除step3:创建自定义异常处理器step5&#xff1a;创建给用提示的页面step6&#xff1a;测试输入&#xff08;10/0&#xff09; 二、BeanValidato…

TCP/IP网络模型详解

在计算机网络领域&#xff0c;网络模型通常指的是 OSI&#xff08;Open Systems Interconnection&#xff09;参考模型或 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;模型。这些模型描述了网络中数据传输的层次结构&#xff0c;便于理解和…

ROS2从入门到精通2-3:详解机器人3D物理仿真Gazebo与案例分析

目录 0 专栏介绍1 什么是Gazebo?2 Gazebo架构2.1 Gazebo前后端2.2 Gazebo文件格式2.3 Gazebo环境变量3 Gazebo安装与基本界面4 搭建自己的地图4.1 编辑地图4.2 保存地图4.3 加载地图5 常见问题0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有…