首页 > 其他分享 >XXL-JOB搭建与使用

XXL-JOB搭建与使用

时间:2023-09-02 18:32:46浏览次数:40  
标签:执行器 spring job JOB datasource XXL xxl ### 搭建

一、背景

最一开始接触XXL-JOB是因为一个定时任务的需求,说到定时任务可能一开始会想到Java中的@Scheduled,但我们的项目是集群部署的,如果使用@Scheduled将会出现风险,所以本次的重点XXL-JOB就非常适合当前的场景,本次我们将讲述:本地部署xxl-job服务+接入本地需要进行定时执行的服务。

二、开始搭建

1.本地部署xxl-job

简单几步就可以搞定,首先我们搞一份xxl-job的源码,根据项目中带着的sql初始化表,然后修改项目配置,打包,运行。

源码地址:https://github.com/xuxueli/xxl-job.git

克隆一份,打开。

XXL-JOB搭建与使用_xxl-job

然后打开以下文件,把内容放在数据库中执行,该文件会自动生成数据库、表和数据。

XXL-JOB搭建与使用_spring_02

接下来我们改一下application.properties配置,以下需要改动的地方做了标注:

### 可能你需要区别其他服务端口
server.port=8017
### 服务的后缀名,可改可不改哦
server.servlet.context-path=/xxl

### actuator
management.server.base-path=/actuator
management.health.mail.enabled=false

### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.web.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.##########

### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model

### xxl-job, 此处为使用sql文件创建的数据库链接配置,如果你不是MySQL,记得更换
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=12345
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

如果你对其他配置有了解需求,可以查看项目中自带的官方文档,也可以去官网。

然后就可以打成jar包啦。

到生成jar包的路径下cmd运行起来:

java -jar 打的包.jar

接着我们用以上配置的端口号和后缀访问浏览器

XXL-JOB搭建与使用_xxl-job_03

此时xxl-job说:我本地独立部署滴任务完成啦!

2.接入我们自己的服务

在我们项目的pom中添加xxl-job的依赖

				<!--xxl_job-->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.0</version>
        </dependency>

在配置文件中添加xxl-job的配置


#xxl-job
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8017/xxl

### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-executor-sample

#优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
##端口号对应xxl调度中心端口号、名称对应server.context-path
#xxl.job.executor.addresses=

### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=

### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999

### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=

### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=

### 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则不生效;
xxl.job.executor.logretentiondays=-1

创建一个配置类


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;

/**
 * xxl-job config
 *
 * @author xuxueli 2017-04-28
 */
@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

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


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.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;
    }

    /**
     * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
     *
     *
     *
     *
     *
     *
     *
     *      1、引入依赖:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器启动变量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、获取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */


}

测试类:

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

@Component
public class XxlJobDemo {

    @XxlJob("test")
    public void xxlJobTest(){

        XxlJobHelper.log("输出日志");
        // 参数
        System.out.println(XxlJobHelper.getJobParam());
        // 多少台机器
        System.out.println(XxlJobHelper.getShardTotal());
        // 现在是第几台机器
        System.out.println(XxlJobHelper.getShardIndex());
    }

}

打开我们的xxl-job页面添加一个执行器

XXL-JOB搭建与使用_xxl-job_04

然后去到任务管理,去建个任务

XXL-JOB搭建与使用_spring_05

然后可以启动我们的的服务了,再在页面上:job!! 启动!!

XXL-JOB搭建与使用_xxl-job_06


这时就会发现我们的服务所需定时执行的任务已经按照xxl-job配置的时间自动执行了。

Congratulation!!!You got it!!!

If you succeed,plase give me a "nice"!!!


有错误的地方欢迎指出,有想法欢迎讨论。





标签:执行器,spring,job,JOB,datasource,XXL,xxl,###,搭建
From: https://blog.51cto.com/u_15668993/7334383

相关文章

  • 搭建高效的企业培训系统:源码解析与最佳实践
    在现代企业环境中,培训和发展员工的重要性变得越来越明显。为了保持竞争力,企业需要不断提升员工的技能和知识。搭建一个高效的企业培训系统可以帮助企业实现这一目标。一、什么是企业培训系统? 企业培训系统是一个涵盖广泛功能的复杂系统。它不仅要管理培训内容,还需要跟踪员工的进度......
  • 如何搭建虚拟专有网络访问公司内网
    前言因为公司开发都是内网环境,以往居家办公或非公司环境,都需要进行远程到公司电脑进行办公,为了方便部门同事出差驻场开发,搭建了虚拟专有网络在实际搭建过程中使用了OpenVPN和SoftEtherVPN两种方式,做个总结记录,个人还是更推荐SoftEtherVPN,有可视化界面,配置简单以下操作中服务端指......
  • Flink 1.17教程:集群搭建、运行模式(standalone/yarn/k8s)及历史服务器
    集群角色集群启动如果是部署在本地,本地访问,无需进行任何配置,直接启动即可。如果是部署在服务器,需要远程访问,则需要将flink.conf中的localhost修改为服务器IP地址或是0.0.0.0节点服务器hadoop102hadoop103hadoop104角色JobManagerTaskManagerTaskManagerTaskManager[atguigu@node001......
  • postgresql流复制一(环境搭建)
    PostgreSQL早在9.0版本开始支持物理复制,也可称为流复制(StreamingReplication),通过流复制技术,可以从实例级复制出一个与主库一模一样的从库(也称之为备库)举个简单的例子,在主机host1上创建了一个PostgreSQL实例,并在实例上创建多个数据库,通过流复制技术可以在另外一台主机ho......
  • ShowMeBug X 得物APP | 精准识别技术人才,高效搭建潮流电商团队
    ShowMeBug签约了新一代潮流网购社区——得物APP,并在技术的赋能下,为得物APP提供了有效的技术人才招聘解决方案,帮助企业快速识别优质技术人才,精准评估技术人才实力。得物APP通过ShowMeBug 技术测评环节的智能组卷和自动评卷功能,HR高效完成对技术候选人的初步筛选,为技术面试官节......
  • mailcow - 搭建自己的邮件服务器
    title:mailcow-搭建自己的邮件服务器tags:邮件category:/小书匠grammar_cjkRuby:true欢迎使用{小书匠}(xiaoshujiang)笔记软件,您可以通过小书匠主按钮>模板里的模板管理来改变新建文章的内容。小书匠是一款本地优先,去中心化,分布式,支持选择性同步的全平台覆盖笔记......
  • 【从0到1】用Github Pages和VuePress搭建博客
    写在前面优点:免费简单,上手快相比博客园和CSDN自定义程度高缺点:静态页面,缺少一些交互功能我选择了它是因为只是想用博客做记录,不想花时间自己写前端~GithubPages在GitHub里新建一个Repository,命名为[your_github_name].github.io,博客的网址就是这个啦~eg.这是我的......
  • 在 Amazon 搭建无代码可视化的数据分析和建模平台
    现代企业常常会有利用数据分析和机器学习帮助解决业务痛点的需求。如制造业中,利用设备采集上来的数据做预测性维护,质量控制;在零售业中,利用客户端端采集的数据做渠道转化率分析,个性化推荐等。亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案......
  • 搭建LNMP 架构
    搭建LNMP架构环境准备lnmp需要安装nginxmysqlphp软件#关闭防火墙systemctldisable--nowfirewalld#临时禁用SELinux的强制访问控制机制setenforce0 1安装依赖包yum-yinstallpcre-develzlib-develgccgcc-c++make2创建运行用户、组(Nginx服务程序......
  • Pytorch环境搭建
     https://pytorch.org/ https://blog.csdn.net/weixin_43737866/article/details/127784768https://www.jianshu.com/p/4c7b9127cf83https://blog.csdn.net/m0_56945481/article/details/126998629第一次装Anaconda3最新版,报Solvingenvironment:failedwithinitialfro......