当前位置: 首页 > news >正文

整合XXL-Job任务调度平台

  1. 创建数据库

tables_xxl_job.sql

  1. 引入依赖
<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.0</version>
</dependency>
  1. 编写配置文件
server:port: 8081xxl:job:admin:# 这个地址是xxl-job客户端的启动地址addresses: http://127.0.0.1:8080/xxl-job-admin# 这个accessToken要和客户端的token保持一致accessToken: tokenexecutor:# appname是在客户端建立的执行器名称appname: xxl-job-executoraddress: ""ip: ""port: 9999logpath: ./data/logs/xxl-job/executorlogretentiondays: 30
  • accessToken. appname : 与客户端里的保持一致
  1. resource 目录下添加 logback.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds"><contextName>logback</contextName><property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern></rollingPolicy><encoder><pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="console"/><appender-ref ref="file"/></root></configuration>
  1. 编写配置类
package com.example.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author Ccoo* 2024/5/16*/
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")private String adminAddresses;@Value("${xxl.job.executor.appname}")private String appName;@Value("${xxl.job.executor.ip}")private String ip;@Value("${xxl.job.executor.port}")private int port;@Value("${xxl.job.accessToken}")private String accessToken;@Value("${xxl.job.executor.logpath}")private String logPath;@Value("${xxl.job.executor.logretentiondays}")private int logRetentionDays;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appName);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}
  1. 注册Job
package com.example.job;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.time.LocalDate;/*** @author Ccoo* 2024/5/16*/
@Component
public class MyJobHandler {private Logger log = LoggerFactory.getLogger(MyJobHandler.class);@XxlJob(value = "demoJobHandler", init = "init", destroy = "destroy")public ReturnT<String> execute(String param) {log.info("小滴课堂execute任务触发成功:" + LocalDate.now());return ReturnT.SUCCESS;}private void init() {log.info("init方法调用成功");}private void destroy () {log.info("destroy方法调用成功");}
}
  1. 客户端注册调度任务

查看客户端是否注册成功:

部署调度中心集群


  1. 多节点部署执行器

修改idea的相关配置

修改yml配置文件对应的端口号

启动多份实例, 部署多个节点

查看是否注册成功

  1. 实现任务调度策略

选择合适的路由策略可以达到负载均衡的效果

LVS + KeepAlive

  1. 海量数据分片处理
@XxlJob(value = "shardingJobHandler")
public void shardingJobHandler(){// 当前执行器编号int shardIndex = XxlJobHelper.getShardIndex();// 总的分片数,就是执行器的集群数量int shardTotal = XxlJobHelper.getShardTotal();log.info("分片总数:{},当前分片数:{}" ,shardTotal ,shardIndex);List<Integer> allUserIds = getAllUserIds();allUserIds.forEach(obj->{if(obj % shardTotal == shardIndex){log.info("第{}片,命中分片开始处理用户id={}",shardIndex,obj);}});
}

相关文章:

整合XXL-Job任务调度平台

创建数据库 tables_xxl_job.sql 引入依赖 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.0</version> </dependency>编写配置文件 server:port: 8081xxl:job:admin:# 这…...

hi3536上ffmpeg带rtmp移植

1.下载ffmpeg-4.1.3版本源码包 用下面的脚本进行configure&#xff1a; ./configure \--target-oslinux \--prefix./libs/ \--enable-cross-compile \--archarm \--ccarm-hisiv500-linux-gcc \--cross-prefixarm-hisiv500-linux- \--nmarm-hisiv500-linux-nm \--enable-share…...

在PHP中,读取大文件

在PHP中&#xff0c;读取大文件可以采用以下几种方法&#xff1a; 1. 使用fopen和fread函数&#xff1a;这是最基本的文件读取方法&#xff0c;可以逐行读取大文件。首先使用fopen函数打开文件&#xff0c;然后使用fread函数指定读取的字节数&#xff0c;逐行读取文件内容并进…...

N-gram详解

文章目录 一、什么是N-gram?二、N-gram的种类三、优缺点PS&#xff1a;补充 一、什么是N-gram? 在自然语言处理中&#xff0c;n-gram是一种重要的文本表示方法。n-gram是指给定文本中连续的n个项目&#xff0c;这些项目可以是声音、单词、字符或者像素等。n-gram模型常常用于…...

电路中的电源轨及地的区别和处理

电源轨 VCC 通常代指正电源供电轨。在大多数数字和模拟电路中&#xff0c;VCC代表电路中的正电源端。VCC提供电路所需的正电压&#xff0c;通常是用来驱动晶体管、集成电路。 VDD 相对与VCC的正电源供应&#xff0c;VDD更常用于表示数字电路中的正电源引脚。VDD常见于集成电…...

k8s可以部署私有云吗?私有云部署全攻略

k8s可以部署私有云吗&#xff1f;K8S可以部署私有云。Kubernetes是一个开源的容器编排引擎&#xff0c;能够自动化容器的部署、扩展和管理&#xff0c;使得应用可以在各种环境中高效运行。通过使用Kubernetes&#xff0c;企业可以在自己的数据中心或私有云环境中搭建和管理容器…...

编辑器资源管理器

解释 EditorResMgr 是一个用于在 Unity 编辑器中加载资源的管理器。它通过 Unity 编辑器的 API (AssetDatabase) 进行资源加载&#xff0c;但仅在开发和编辑模式下可用&#xff0c;不能在最终发布的游戏中使用。这种工具通常用来在开发过程中快速加载编辑器中的资源&#xff0…...

高性能数据分析利器DuckDB在Python中的使用

DuckDB具有极强的单机数据分析性能表现&#xff0c;功能丰富&#xff0c;具有诸多拓展插件&#xff0c;且除了默认的SQL查询方式外&#xff0c;还非常友好地支持在Python、R、Java、Node.js等语言环境下使用&#xff0c;特别是在Python中使用非常的灵活方便。 安装 pip insta…...

IAR全面支持旗芯微车规级MCU,打造智能安全的未来汽车

中国上海&#xff0c;2024年10月18日 — 在全球汽车电子快速发展的今天&#xff0c;IAR与苏州旗芯微半导体有限公司&#xff08;以下简称“旗芯微”&#xff09;联合宣布了一项激动人心的合作——IAR Embedded Workbench for Arm 9.60.2版本现已全面支持旗芯微车规级MCU&#x…...

**深入浅出:TOGAF中的应用架构**

摘要&#xff1a; 在企业架构&#xff08;EA&#xff09;领域&#xff0c;TOGAF&#xff08;The Open Group Architecture Framework&#xff09;是一个广泛应用的框架。本文将带你深入了解TOGAF中的应用架构&#xff0c;帮助你理解其核心概念和实际应用。无论你是初学者还是有…...

Pytorch学习--DataLoader的使用

一、DataLoader简介 DataLoader官网 重要参数&#xff1a;画红框的参数 dataset: 作用&#xff1a;表示要加载的数据集。DataLoader通过该参数从数据集中读取数据。类型&#xff1a;Dataset&#xff0c;即PyTorch定义的Dataset类&#xff0c;用于封装数据并提供数据索引的功…...

代购系统界的“数据大厨”:定制API数据处理,烹饪出美味佳肴

在这个代购的盛宴中&#xff0c;每一位代购者都是一位大厨&#xff0c;他们用数据作为食材&#xff0c;用代码作为烹饪技巧&#xff0c;烹饪出一道道令人垂涎的美味佳肴。今天&#xff0c;就让我们走进代购界“数据大厨”的厨房&#xff0c;看看他们是如何定制API数据处理&…...

二十、Innodb底层原理与Mysql日志机制深入剖析

文章目录 一、MySQL的内部组件结构1、Server层1.1、连接器1.2、查询缓存1.3、分析器1.4、优化器1.5、执行器 2、存储引擎层 二、Innodb底层原理与Mysql日志机制1、redo log重做日志关键参数2、binlog二进制归档日志2.1、binlog日志文件恢复数据 3、undo log回滚日志4、错误日志…...

数据库设计与管理的要点详解

目录 前言1 数据库设计的基础&#xff1a;清晰的事实表1.1 确保数据的一致性和完整性1.2 优化查询性能 2 权限问题与数据问题的区分2.1 确认权限问题2.2 确认数据问题 3 视图与存储过程的合理使用3.1 视图的作用与应用3.2 存储过程的应用与优化 4 数据库操作日志的设计4.1 确保…...

国家科技创新2030重大项目

国家科技创新2030重大项目涵盖多个领域&#xff0c;例如&#xff1a;量子信息、人工智能、深海空间站、天地一体化信息网络、大飞机、载人航天与月球探测、脑科学与类脑研究、健康保障等&#xff0c;这些项目旨在解决制约我国经济社会发展的重大科技瓶颈问题&#xff0c;提升国…...

如何使用 Flutter Local Notifications 插件

如何使用 Flutter Local Notifications 插件 local_notificationsNo longer in development -Flutter plugin for creating notifications项目地址:https://gitcode.com/gh_mirrors/lo/local_notifications 项目介绍 Flutter Local Notifications 是一个为 Flutter 应用程序…...

【openEuler/Centos】yum安装软件报Error: GPG check FAILED【分析根因弄明白,亲测有效不浪费时间】

yum安装软件报Error: GPG check FAILED 环境信息&#xff1a;cat /etc/openEuler-release openEuler release 22.03 (LTS-SP1) 报错信息 The downloaded packages were saved in cache until the next successful transaction. You can remove cached packages by executin…...

实现vuex源码,手写

实现vuex源码&#xff0c;手写 Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库&#xff0c;它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 第一步&#xff1a;定义初始化Store类 创建文件夹store/vuex.js 1…...

使用 Python 和 Pandas 处理 Excel 数据:合并单元格示例

引言 在数据处理过程中,我们经常会遇到需要从 Excel 文件中提取和处理数据的情况。本文将通过一个简单的示例,介绍如何使用 Python 的 Pandas 库来读取 Excel 文件,处理其中的合并单元格,并将结果输出到新的 Excel 文件中。(这里的合并是列1提取一个数据,列2提取两个数据…...

Python poetry 虚拟环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Poetry是什么&#xff1f;二、使用步骤1.安装poetry2、初始化poetry3、创建虚拟环境 启动和退出虚拟环境poetry 常用指令总结 一、Poetry是什么&#xff1f; P…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...