网站搜索优化官网,提供网站建设制作,太原北京网站建设,wordpress自定义登录页xxl-job是开源架构#xff0c;可以通过它实现调度中心和执行器。 git地址和 官网中进行了详细的技术说明。 xxl-job支持单机部署和集群式部署#xff0c;在集群式部署中又可以实现调度中心集群式部署和执行器集群式部署。本文主要针对调度中心和执行器分离单机部署方式进… xxl-job是开源架构可以通过它实现调度中心和执行器。 git地址和 官网中进行了详细的技术说明。 xxl-job支持单机部署和集群式部署在集群式部署中又可以实现调度中心集群式部署和执行器集群式部署。本文主要针对调度中心和执行器分离单机部署方式进行说明。 xxl-job任务调度搭建及简单使用 简介调度中心搭建数据库创建配置文件编写docker容器启动启动测试 执行器搭建依赖引入配置 使用说明运行调度中心运行执行器编写任务代码执行 简介 xxl-job中存在调度中心和执行器两个概念其中调度中心负责定时调度执行器负责具体的执行工作。调度中心本质上就是一个spring boot项目。在使用xxl-job时在调度中心配置调度规则及执行内容然后再在执行器中实现具体的执行作业。 本demo中在调度中心配置每隔一分钟执行一次执行的具体内容为调用某个service的方法在执行其中需要实现service的具体方法。
调度中心搭建 调度中心的搭建可以分为四部分进行分别是
数据库创建配置文件编写docker容器启动启动测试 下面将针对上述四个过程中进行详细说明。
数据库创建 数据库创建SQL文件可以通过git查找位于\xxl-job-master\doc\db路径下可以在mysql中创建一个数据库然后执行该SQL文件实现数据库表结构及基础数据的初始化。
配置文件编写 通过查看xxl-job-admin项目的pom文件包含以下内容 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency可知调度中心本质上就是一个springboot项目。其docker构建文件如下
FROM openjdk:8-jre-slim
MAINTAINER xuxueli
ENV PARAMS
ENV TZPRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone
ADD target/xxl-job-admin-*.jar /app.jar
ENTRYPOINT [sh,-c,java -jar $JAVA_OPTS /app.jar $PARAMS]可通过-e PARAMS设置docker启动命令中调度中心的执行参数。既然调度中心本质上一个spring boot程序因此可以配置该程序运行的配置文件即application.properties文件。根据官网指出xxl-job提供了以下特有配置内容
### 调度中心JDBC链接链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
spring.datasource.urljdbc:mysql://127.0.0.1:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai
spring.datasource.usernameroot
spring.datasource.passwordroot_pwd
spring.datasource.driver-class-namecom.mysql.jdbc.Driver
### 报警邮箱
spring.mail.hostsmtp.qq.com
spring.mail.port25
spring.mail.usernamexxxqq.com
spring.mail.passwordxxx
spring.mail.properties.mail.smtp.authtrue
spring.mail.properties.mail.smtp.starttls.enabletrue
spring.mail.properties.mail.smtp.starttls.requiredtrue
spring.mail.properties.mail.smtp.socketFactory.classjavax.net.ssl.SSLSocketFactory
### 调度中心通讯TOKEN [选填]非空时启用
xxl.job.accessToken
### 调度中心国际化配置 [必填] 默认为 zh_CN/中文简体, 可选范围为 zh_CN/中文简体, zh_TC/中文繁体 and en/英文
xxl.job.i18nzh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max200
xxl.job.triggerpool.slow.max100
### 调度中心日志表数据保存天数 [必填]过期日志自动清理限制大于等于7时生效否则, 如-1关闭自动清理功能
xxl.job.logretentiondays30除此之外我们还可以进行spring boot的启动项配置如下设置启动使用数据库连接内容
### xxl-job, datasource
spring.datasource.urljdbc:mysql://mysql:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai
spring.datasource.usernameroot
spring.datasource.passwordpassword
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driverdocker容器启动 在docker启动的过程中我们主要需要注意的点有以下内容
指定配置文件端口映射网络配置 由于spring boot启动可以指定配置文件在进行docker部署调度中心时需要配置数据库连接、token等相关内容因此我们需要实现自己的配置文件可以通过文件卷挂载 -e配置变量的形式实现进行配置文件自定义。 spring boot web项目启动的端口默认是8080使用docker部署需要将容器内端口映射出来。 此外由于xxl-job-admin调度中心需要使用到数据库因此我们需要将调度中心容器和mysql容器实现网络通信为方便两个容器之间的通信将MySQL容器和调度中心容器放到同一网络下因此需要配置–net参数。 部署命令如下
docker run -d --netnacos-mysql --namexxl-job-admin -p 8081:8080 -v D:\docker\xxl-job\application.properties:/application.properties -e PARAMS--spring.config.location/application.properties xuxueli/xxl-job-admin:2.4.0注意需要将mysql容器也放到nacos-mysql网络下并且创建数据库。调度中心的容器创建过程中必须指定版本号不能使用last进行获取。
启动测试
进行管理员客户端访问。
http://localhost:8081/xxl-job-admin/
用户名admin
密码123456运行界面如下
执行器搭建
依赖引入 执行器实际就是执行任务的具体程序在实现执行器搭建的过程中需要在项目中引入 !-- xxl-job-core --dependencygroupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion2.4.0/version/dependency!-- 作为一个spring cloud项目使用openfeign进行api调用具体的服务--配置
Configuration
public class XxlJobConfig {Beanpublic XxlJobSpringExecutor xxlJobExecutor() {XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();// 调度中心urlxxlJobSpringExecutor.setAdminAddresses(http://127.0.0.1:8081/xxl-job-admin);// 执行器名称xxlJobSpringExecutor.setAppname(imos-job);
// xxlJobSpringExecutor.setAddress();
// xxlJobSpringExecutor.setIp(192.168.1.56);
// xxlJobSpringExecutor.setPort(7999);// token该配置必须和调度中心的配置文件总的token配置一致xxlJobSpringExecutor.setAccessToken(default_token);
// xxlJobSpringExecutor.setLogPath(logPath);
// xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}通过以上操作及完成了执行器的搭建过程可以将执行器理解为一个spring 项目在里面编写我们具体的业务代码即可。 在本demo中执行器将通过openfeign调用其他微服务的相关接口实现定时任务因此pom文件中还需要引入其他相关依赖。 在执行器的搭建过程中我们发现除了引入job-core依赖配置bean之外并没有为执行器做什么其他相关配置执行器某个业务的定时执行是由调度中心进行配置的执行器本身并没有定时配置简单来讲执行器仅给调度中心提供原料和执行的作用。 本demo的实现采用glue模式进行实现该模式下使用者在调度中心编写java代码java代码中可以通过autowire的形式引入执行器定义的service因此可以理解为执行器为调度中心提供原料。待定时任务执行时调度中心其实是将java代码发送给执行器执行器接受到代码后通过反射等形式进行执行代码。
使用说明
运行调度中心 启动调度中心docker容器登录调度中心管理界面并添加一个执行器该执行器名称和我们执行器中设定的名称需要一致注册方式选择自动注入即可
运行执行器 运行执行器后OnLine 机器地址应该存在一组ip字段。如下图 ## 新增任务 在调度中心中新增任务并选择glue模式如下图
编写任务代码 在任务管理列表中点击操作进入GULE模式进行java代码编写 在编写代码的过程中可以引入执行器中存在的service或者new执行器中的对象需要注意的是在使用执行器的类或者方法的过程中需要import相关类类的全限定名和执行器中需要严格保持一致。
执行 在任务管理操作进行执行任务执行器将执行该代码并在控制台展示相关内容如下图