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

中国门户网站排行连锁 加盟 网站模板

中国门户网站排行,连锁 加盟 网站模板,科学城做网站公司,网站怎么做sem目录 详解 调度中心 执行器 原理 快速入门 源码仓库地址 1.初始化数据库 2.配置调度中心 1.解压源码 2.需改配置文件 3.启动调度中心 3.配置执行器 1.引入pom依赖 2.修改配置文件 3.执行器组件配置 4.部署执行器项目 4.开发第一个任务 BEAN模式(类…

目录

详解

调度中心

执行器

原理

快速入门

源码仓库地址

1.初始化数据库

2.配置调度中心

1.解压源码

2.需改配置文件

3.启动调度中心

3.配置执行器

1.引入pom依赖

2.修改配置文件

3.执行器组件配置

4.部署执行器项目

4.开发第一个任务

BEAN模式(类形式)

BEAN模式(方法形式)

GLUE模式(Java)

任务类型

使用场景


详解

XXL-JOB是一个分布式的任务调度平台,其核心设计目标是:学习简单、开发迅速、轻量级、易扩展,现在已经开放源代码并接入多家公司的线上产品线,开箱即用。

xxl-job框架主要用于处理分布式的定时任务,其主要由调度中心和执行器组成。

调度中心

统一管理任务调度平台上的调度任务,负责触发调度执行,并且提供任务管理平台。

执行器

接收调度中心的调度并且执行,可以直接执行也可以集成到项目中。

        调度中心和执行器两个模块分开部署,相互分离,两者之间通过RPC进行通信,其中调度中心主要是提供一个平台,管理调度信息,发送调度请求,自己不承担业务代码,而执行器接受调度中心的调度执行业务逻辑。

原理

1.执行器的注册和发现

        执行器启动线程每隔30秒向注册表xxl_job_registry请求一次,更新执行器的心跳信息,调度中心启动线程每隔30秒检测一次xxl_job_registry,将超过90秒还没有收到心跳的实例信息从xxl_job_registry删除,并更新xxl_job_group服务的实例列表信息。

2.调度中心调用执行器

        执行器接收到调度中心的调度信息,将调度信息放到对应的任务的等待队列中;

        执行器的任务处理线程从任务队列中取出调度信息,执行业务逻辑,将结果放入一个公共的等待队列中;

        执行器有一个专门的回调线程定时批量从结果队列中取出任务结果,并且回调告知调度中心。

快速入门

源码仓库地址

github:https://github.com/xuxueli/xxl-job

gitee:xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

gitcode:GitCode - 全球开发者的开源社区,开源代码托管平台

中央仓库地址:

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${最新稳定版本}</version>
</dependency>

1.初始化数据库

下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。

“调度数据库初始化SQL脚本” 位置为:/xxl-job/doc/db/tables_xxl_job.sql

2.配置调度中心

1.解压源码

    xxl-job-admin:调度中心
    xxl-job-core:公共依赖
    xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器)
        :xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
        :xxl-job-executor-sample-frameless:无框架版本;

2.需改配置文件

地址:/xxl-job/xxl-job-admin/src/main/resources/application.properties

内容说明:

### web
server.port=8081
server.servlet.context-path=/xxl-job-admin### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########
spring.freemarker.settings.new_builtin_class_resolver=safer### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model### xxl-job, datasource
spring.datasource.url=jdbc:mysql://192.168.1.200: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### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.from=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory### xxl-job, access token
xxl.job.accessToken=default_token### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100### xxl-job, log retention days
xxl.job.logretentiondays=30

修改项:

server.port=8081:调度中心端口号
server.servlet.context-path=/xxl-job-admin::调度中心项目地址
spring.datasource.url:调度中心数据库地址
spring.datasource.username:调度中心数据库用户名称
spring.datasource.password:调度中心数据库用户密码
xxl.job.accessToken:调度中心通讯TOKEN [选填]:非空时启用;为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;
xxl.job.logretentiondays=30:调度中心日志表数据保存天数 [必填]

3.启动调度中心

如果已经正确进行上述配置,可将项目编译打包部署。

调度中心访问地址:1http://localhost:808/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

至此“调度中心”项目已经部署成功。 

3.配置执行器

现以 springboot 版本为例;

1.引入pom依赖

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${最新稳定版本}</version>
</dependency>

2.修改配置文件

修改springboot项目中application.properties文件;

内容说明:

# web port
server.port=8082
# no web
#spring.main.web-environment=false# log config
logging.config=classpath:logback.xml### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin### xxl-job, access token
xxl.job.accessToken=default_token### xxl-job executor appname
xxl.job.executor.appname=xxl-job-executor-sample
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
### xxl-job executor server-info
xxl.job.executor.ip=127.0.0.1
xxl.job.executor.port=9999
### xxl-job executor log-path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30

修改项:

server.port=8082 :项目ip
xxl.job.admin.addresses:调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。
xxl.job.accessToken:执行器通讯TOKEN [选填]:非空时启用;为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;
xxl.job.executor.appname:执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.ip=127.0.0.1:执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。
xxl.job.executor.port=9999:执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999

3.执行器组件配置

新建执行器组件,配置内容说明:

    @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;}

4.部署执行器项目

正确进行上述配置,可将执行器项目编译打部署

4.开发第一个任务

BEAN模式(类形式)

Bean模式任务,支持基于类的开发方式,每个任务对应一个Java类。不限制项目环境,兼容性好。即使是无框架项目,如main方法直接启动的项目也可以提供支持。

开发一个继承自"com.xxl.job.core.handler.IJobHandler"的JobHandler类,实现其中任务方法。

@Component

public class DemoClassHandler extends IJobHandler {
   @Override
   public ReturnT<String> execute(String param) throws Exception {
      XxlJobLogger.log("XXL-JOB, Hello World.");
 
      for (int i = 0; i < 5; i++) {
         XxlJobLogger.log("beat at:" + i);
         TimeUnit.SECONDS.sleep(2);
      }
      return SUCCESS;
   }
 
}

编写XxlJobConfig配置文件,用于注册定时任务类:

BEAN模式(方法形式)

Bean模式任务,支持基于方法的开发方式,每个任务对应一个方法。每个任务只需要开发一个方法,并添加”@XxlJob”注解即可,更加方便、快速

@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");
}

GLUE模式(Java)

1.新建任务

登录调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。

请点击任务右侧 “GLUE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式(Java)” 运行模式的任务默认已经初始化了示例任务代码,即打印Hello World。
( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;

任务类型

1.BEAN模式: 类形式、方法形式

Bean模式任务,支持基于方法的开发模式,每个任务对应一个方法。
优点:
        每个任务只需要开发一个方法,并添加**@XxlJob注解**即可,方便简单快捷,支持自动扫描并添加至执行器容器中。
缺点:
        要求spring开发环境,基本现在项目spring必备。新定时任务的CRUD需要项目的重新构建和项目启动,如果遇到未执行完毕的情况,可能会多次执行,但是保证多次执行和一次执行的结果不影响,对系统也不会有影响

2.GLUE模式:Java / Shell / Python / Nodejs / Php

        定时任务以源码方式维护在调度中心,不需要在本地编写任何代码,我们在使用过程中,经常是在本地编码完毕后,直接复制到线上维护中心中
优点:
        支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler和重启项目
缺点:
        如果你依赖了某个框架和服务,需要先依赖到自己项目中,然后在Web IDE中才能依赖,否则会执行报错,正常可以理解为,把代码从项目中搬到线上,可以实时编辑,但是和自己在本地写代码的要求一样,依赖和服务必须全部具备,多用于定时任务经常调整的场景中使用

使用场景

实际项目中可能会使用到Xxl-job来作为分布式任务框架执行定时任务的场景,都是为了让业务之外的操作变得更加的简单高效。具体如下:

    日志处理:当系统产生大量日志文件时,通过XXL-JOB创建定时任务,定期将日志文件进行压缩、归档或上传到云存储等操作;
    脚本执行:即使服务已经上线,仍然支持多种格式脚本执行;
    定期数据备份;
    定期删除旧文件;
    定时发送邮件等;

http://www.yayakq.cn/news/451027/

相关文章:

  • 青岛高级网站建设价格个人网页设计论文正文
  • 网站建设尾款收取茂名网站制作公司
  • 公司网站如何做维护免费的个人简历模板wps
  • 上海网站论坛建设芜湖做网站的客户
  • 高明网站开发公司怎么做网站版面分析
  • 打字网站怎么做网站 建设标准
  • 融水县建设局网站网上商店建设前准备
  • 网站建设教程 mysql有哪些网站用vue做的
  • 自己做的娱乐平台网站打开一个网站
  • 设计素材网站那个好中小网站建设
  • 湛江市建网站仿网站
  • 做家教的网站企业网站建站价格
  • 宿迁沭阳网站建设手机版网页开发者工具
  • 程序员是不是都是做网站的wordpress 主题 支持文章形式
  • 佛山 顺德网站设计wordpress 分享到朋友圈
  • 济南市工程建设技术监督局网站有没有永久免费crm
  • 网站设计电脑培训学校试描述一下网站建设的基本流程图
  • 三明网站优化logo库官网
  • 建设网站服务器怎么弄在58同城做网站怎么样
  • 淄博英文网站建设互动平台罗马复兴
  • 网站你懂我意思正能量晚上在线观看不用下载免费魅族网络设计是不是艺术类
  • 租用的网站空间的缺点自己的网站怎么做排名
  • 网站文章内容一键排版功能网站建设情况介绍
  • 南京做网站建设的公司服务器有了怎么做网站
  • 网站访问量统计代码怎么做网站敏感关键词.txt
  • 金华手机模板建站网站排名优化效果
  • 网站建设情况调研报告职高的电子商务主要学什么
  • 用jsp做的网站在不同浏览器显示效果差异很大如何解决网站的类型有哪几种
  • 免费网站建站平台东莞网站平台费用
  • 查询网站下列软件中属于网页制作工具