工程设计东莞网站建设技术支持网站的统计 怎么做
web/
2025/9/27 2:20:30/
文章来源:
工程设计东莞网站建设技术支持,网站的统计 怎么做,江东seo做关键词优化,网站不显示域名解析错误怎么办目录 前言初始化数据库Docker 部署 xxl-job下载镜像创建容器并运行访问调度中心 SpringBoot 整合 xxl-jobpom.xmlapplication.ymlXxlJobConfig.java执行器注册查看 定时任务测试添加测试任务配置定时任务测试结果 结语附录xxl-job 官方文档xxl-job 源码测试项目源码 前言
xxl-… 目录 前言初始化数据库Docker 部署 xxl-job下载镜像创建容器并运行访问调度中心 SpringBoot 整合 xxl-jobpom.xmlapplication.ymlXxlJobConfig.java执行器注册查看 定时任务测试添加测试任务配置定时任务测试结果 结语附录xxl-job 官方文档xxl-job 源码测试项目源码 前言
xxl-job 是一个分布式任务调度平台它提供了强大的任务调度和执行能力可以帮助我们实现任务的自动化调度和执行。本文将介绍如何在 Docker 环境下部署 xxl-job并将其与 Spring Boot 进行整合。
初始化数据库
数据库脚本tables_xxl_job-2.4.0.sql
# XXL-JOB v2.4.0
# Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS xxl_job default character set utf8mb4 collate utf8mb4_unicode_ci;
use xxl_job;SET NAMES utf8mb4;CREATE TABLE xxl_job_info (id int(11) NOT NULL AUTO_INCREMENT,job_group int(11) NOT NULL COMMENT 执行器主键ID,job_desc varchar(255) NOT NULL,add_time datetime DEFAULT NULL,update_time datetime DEFAULT NULL,author varchar(64) DEFAULT NULL COMMENT 作者,alarm_email varchar(255) DEFAULT NULL COMMENT 报警邮件,schedule_type varchar(50) NOT NULL DEFAULT NONE COMMENT 调度类型,schedule_conf varchar(128) DEFAULT NULL COMMENT 调度配置值含义取决于调度类型,misfire_strategy varchar(50) NOT NULL DEFAULT DO_NOTHING COMMENT 调度过期策略,executor_route_strategy varchar(50) DEFAULT NULL COMMENT 执行器路由策略,executor_handler varchar(255) DEFAULT NULL COMMENT 执行器任务handler,executor_param varchar(512) DEFAULT NULL COMMENT 执行器任务参数,executor_block_strategy varchar(50) DEFAULT NULL COMMENT 阻塞处理策略,executor_timeout int(11) NOT NULL DEFAULT 0 COMMENT 任务执行超时时间单位秒,executor_fail_retry_count int(11) NOT NULL DEFAULT 0 COMMENT 失败重试次数,glue_type varchar(50) NOT NULL COMMENT GLUE类型,glue_source mediumtext COMMENT GLUE源代码,glue_remark varchar(128) DEFAULT NULL COMMENT GLUE备注,glue_updatetime datetime DEFAULT NULL COMMENT GLUE更新时间,child_jobid varchar(255) DEFAULT NULL COMMENT 子任务ID多个逗号分隔,trigger_status tinyint(4) NOT NULL DEFAULT 0 COMMENT 调度状态0-停止1-运行,trigger_last_time bigint(13) NOT NULL DEFAULT 0 COMMENT 上次调度时间,trigger_next_time bigint(13) NOT NULL DEFAULT 0 COMMENT 下次调度时间,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_log (id bigint(20) NOT NULL AUTO_INCREMENT,job_group int(11) NOT NULL COMMENT 执行器主键ID,job_id int(11) NOT NULL COMMENT 任务主键ID,executor_address varchar(255) DEFAULT NULL COMMENT 执行器地址本次执行的地址,executor_handler varchar(255) DEFAULT NULL COMMENT 执行器任务handler,executor_param varchar(512) DEFAULT NULL COMMENT 执行器任务参数,executor_sharding_param varchar(20) DEFAULT NULL COMMENT 执行器任务分片参数格式如 1/2,executor_fail_retry_count int(11) NOT NULL DEFAULT 0 COMMENT 失败重试次数,trigger_time datetime DEFAULT NULL COMMENT 调度-时间,trigger_code int(11) NOT NULL COMMENT 调度-结果,trigger_msg text COMMENT 调度-日志,handle_time datetime DEFAULT NULL COMMENT 执行-时间,handle_code int(11) NOT NULL COMMENT 执行-状态,handle_msg text COMMENT 执行-日志,alarm_status tinyint(4) NOT NULL DEFAULT 0 COMMENT 告警状态0-默认、1-无需告警、2-告警成功、3-告警失败,PRIMARY KEY (id),KEY I_trigger_time (trigger_time),KEY I_handle_code (handle_code)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_log_report (id int(11) NOT NULL AUTO_INCREMENT,trigger_day datetime DEFAULT NULL COMMENT 调度-时间,running_count int(11) NOT NULL DEFAULT 0 COMMENT 运行中-日志数量,suc_count int(11) NOT NULL DEFAULT 0 COMMENT 执行成功-日志数量,fail_count int(11) NOT NULL DEFAULT 0 COMMENT 执行失败-日志数量,update_time datetime DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY i_trigger_day (trigger_day) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_logglue (id int(11) NOT NULL AUTO_INCREMENT,job_id int(11) NOT NULL COMMENT 任务主键ID,glue_type varchar(50) DEFAULT NULL COMMENT GLUE类型,glue_source mediumtext COMMENT GLUE源代码,glue_remark varchar(128) NOT NULL COMMENT GLUE备注,add_time datetime DEFAULT NULL,update_time datetime DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_registry (id int(11) NOT NULL AUTO_INCREMENT,registry_group varchar(50) NOT NULL,registry_key varchar(255) NOT NULL,registry_value varchar(255) NOT NULL,update_time datetime DEFAULT NULL,PRIMARY KEY (id),KEY i_g_k_v (registry_group,registry_key,registry_value)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_group (id int(11) NOT NULL AUTO_INCREMENT,app_name varchar(64) NOT NULL COMMENT 执行器AppName,title varchar(12) NOT NULL COMMENT 执行器名称,address_type tinyint(4) NOT NULL DEFAULT 0 COMMENT 执行器地址类型0自动注册、1手动录入,address_list text COMMENT 执行器地址列表多地址逗号分隔,update_time datetime DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(50) NOT NULL COMMENT 账号,password varchar(50) NOT NULL COMMENT 密码,role tinyint(4) NOT NULL COMMENT 角色0-普通用户、1-管理员,permission varchar(255) DEFAULT NULL COMMENT 权限执行器ID列表多个逗号分割,PRIMARY KEY (id),UNIQUE KEY i_username (username) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE xxl_job_lock (lock_name varchar(50) NOT NULL COMMENT 锁名称,PRIMARY KEY (lock_name)
) ENGINEInnoDB DEFAULT CHARSETutf8mb4;INSERT INTO xxl_job_group(id, app_name, title, address_type, address_list, update_time) VALUES (1, xxl-job-executor-sample, 示例执行器, 0, NULL, 2018-11-03 22:21:31 );
INSERT INTO xxl_job_info(id, job_group, job_desc, add_time, update_time, author, alarm_email, schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, executor_handler, executor_param, executor_block_strategy, executor_timeout, executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, child_jobid) VALUES (1, 1, 测试任务1, 2018-11-03 22:21:31, 2018-11-03 22:21:31, XXL, , CRON, 0 0 0 * * ? *, DO_NOTHING, FIRST, demoJobHandler, , SERIAL_EXECUTION, 0, 0, BEAN, , GLUE代码初始化, 2018-11-03 22:21:31, );
INSERT INTO xxl_job_user(id, username, password, role, permission) VALUES (1, admin, e10adc3949ba59abbe56e057f20f883e, 1, NULL);
INSERT INTO xxl_job_lock ( lock_name) VALUES ( schedule_lock);commit;
Docker 部署 xxl-job
下载镜像
Docker 镜像地址: https://hub.docker.com/r/xuxueli/xxl-job-admin/
# 建议指定版本号
docker pull xuxueli/xxl-job-admin:2.4.0创建容器并运行
创建日志挂载目录
mkdir -p /logs/xxl-job创建容器并运行
docker run -d --name xxl-job-admin \
-e PARAMS--spring.datasource.urljdbc:mysql://127.0.0.1:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai --spring.datasource.usernameroot --spring.datasource.password123456 \
-e JAVA_OPTS-Xms512M -Xmx512m \
-p 8080:8080 \
-v /logs/xxl-job:/data/applogs \
xuxueli/xxl-job-admin:2.4.0访问调度中心
调度中心管控台地址http://localhost:8080/xxl-job-admin
默认登录账号密码admin/123456
登录后运行界面如下图所示 SpringBoot 整合 xxl-job
pom.xml
dependencygroupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion2.4.0/version
/dependencyapplication.yml
# xxl-job 定时任务配置
xxl:job:admin:# 多个地址使用,分割addresses: http://127.0.0.1:8080/xxl-job-adminaccessToken: default_tokenexecutor:appname: xxl-job-executor-${spring.application.name}address:ip:port: 9999logpath: /data/applogs/xxl-job/jobhandlerlogretentiondays: 30XxlJobConfig.java
XXL-JOB 自动装配配置
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config** author xuxueli 2017-04-28*/
Configuration
Slf4j
public class XxlJobConfig {Value(${xxl.job.admin.addresses})private String adminAddresses;Value(${xxl.job.accessToken})private String accessToken;Value(${xxl.job.executor.appname})private String appname;Value(${xxl.job.executor.address})private String address;Value(${xxl.job.executor.ip})private String ip;Value(${xxl.job.executor.port})private int port;Value(${xxl.job.executor.logpath})private String logPath;Value(${xxl.job.executor.logretentiondays})private int logRetentionDays;Beanpublic XxlJobSpringExecutor xxlJobExecutor() {log.info( xxl-job config init.);XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}}执行器注册查看 需要 SpringBoot 应用和调度中心在同一网络网络不互通则调度器无法调度执行器 启动 SpringBoot 工程 之后前往调度中心查看执行器注册结果 定时任务测试
添加测试任务
在项目中添加名为 demoJobHandler 的任务处理器Bean模式
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;/*** xxl-job 测试示例Bean模式*/
Component
Slf4j
public class XxlJobSampleHandler {XxlJob(demoJobHandler)public void demoJobHandler() {log.info(XXL-JOB, Hello World.);}}配置定时任务
调度中心新增测试任务运行模式为 BEAN , 任务处理器为 demoJobHandler 配置 Corn 表达式让其每秒执行一次任务 启动定时任务 测试结果
成功频率为1s执行一次。 结语
通过本文的实战演示我们成功地将 xxl-job 部署到 Docker 环境中并与 Spring Boot 进行了整合。我们了解了 xxl-job 的基本概念和特点并学习了如何配置调度器任务、开启任务并调用执行器执行任务。xxl-job 提供了强大的任务调度和执行能力可以帮助我们实现任务的自动化调度和执行提高工作效率。希望本文对你理解和使用 xxl-job 有所帮助欢迎你在实际项目中尝试并应用这些知识。
附录
xxl-job 官方文档
https://www.xuxueli.com/xxl-job/
xxl-job 源码
https://gitee.com/xuxueli0323/xxl-job
测试项目源码
本文涉及的依赖安装、配置和测试用例代码
Gitee: youlai-boot
Github: youlai-boot
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82491.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!