首页 > 其他分享 >SpringBoot整合定时任务框架xxl-job

SpringBoot整合定时任务框架xxl-job

时间:2022-12-07 20:34:40浏览次数:68  
标签:SpringBoot admin address job executor xxlJobSpringExecutor xxl

1.github上下载xxl-job工程

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

2.导入idea

3. 启动调度中心

从github上才下下来的工程,主要分为三个部分,一个是后台管理系统模块,一个是提供的整合案例,一个是core核心模块(提供依赖的)

3.1 执行sql脚本

 

 3.2 修改admin模块的application.properties配置文件的数据库相关参数,根据需要修改发送邮箱等参数;

  admin模块的端口默认是8080

 

 

 3.3 直接启动admin模块,访问后台管理系统

  默认用户名密码:admin/123456

 

 

 3.4 项目上可以将admin模块打包,以java -jar的方式启动 ,打包时会报xxl-job-core依赖找不着, 在pom中配上core的maven依赖即可

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.1</version>
        </dependency>

 

4.开发定时任务业务代码

4.1 新建一个maven工程

 

application.properties配置文件 (主要就是配项目端口,xxl.job.admin.addresses )

spring.application.name=xxl-job-fansirStudy
server.port=8082

logging.config=classpath:logback.xml ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" #本机也不要填127.0.0.1! xxl.job.admin.addresses=http://172.16.16.166:8080/xxl-job-admin ### xxl-job, access token xxl.job.accessToken=default_token ### xxl-job executor appname xxl.job.executor.appname=${spring.application.name} ### 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

#本机也不要填127.0.0.1 xxl.job.executor.ip=172.16.16.166 xxl.job.executor.port=${server.port} ### 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

 

 

 Config类 (xxl-job的端口是根据properties配置的项目端口+100,为了避免端口冲突)

/**
 * @Author fandr
 * @Date 2022-12-07 17:46
 **/
@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);
        //设置xxl-job的运行端口
        xxlJobSpringExecutor.setPort(port+100);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }
}

简单的定时任务代码(参考xxl-job-executor-sample-springboot模块)

/**
 * @Author fandr
 * @Date 2022-12-07 17:50
 **/
@Component
@Slf4j
public class SendMsgService {
    
    @XxlJob("sendMsgHandler")
    public void sendMsgHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");
        log.info("给用户:{} 发送短信!", UUID.randomUUID().toString());
    }
}

启动类

/**
 * @Author fandr
 * @Date 2022-12-07 17:39
 * 发送短信的定时任务
 **/
@SpringBootApplication
public class SendMsgApplication_8082 {
    public static void main(String[] args) {
        SpringApplication.run(SendMsgApplication_8082.class,args);
    }
}

5. 启动定时任务工程

6. 创建任务

 

 7. 创建执行器

 

 8. 启动任务

 

 9. 执行效果

 

 10.查看调度日志

 

 简单快速整合xxl-job到此完成!

 

标签:SpringBoot,admin,address,job,executor,xxlJobSpringExecutor,xxl
From: https://www.cnblogs.com/fansirHome/p/16964288.html

相关文章

  • Springboot处理跨域请求
    Springboot中如何处理跨域请求一.什么是跨域?我们知道Url的一般格式:协议+域名(子域名+主域名)+端口号+资源地址比如:https://www.itquanmingxing.c......
  • Agileboot 1.6.0 发布啦 - 一款致力于规范/精简/可维护 的Springboot + Vue3的快速开
    ⚡平台简介⚡AgileBoot是一套开源的全栈精简快速开发平台,毫无保留给个人及企业免费使用。本项目的目标是做一款精简可靠,代码风格优良,项目规范的小型开发脚手架。适合个人......
  • SpringBoot整合elasticsearch-rest-client实战
    前言很多人在Springboot项目中都已经习惯采用Spring家族封装的spring-data-elasticsearch来操作elasticsearch,而官方更推荐采用rest-client。今天给大家介绍下在springbo......
  • 给你的SpringBoot工程打的jar包瘦瘦身
    Springboot默认方式打包由于打的是全量依赖包(也称为fat包),不但打包慢,体积大,传输也慢,今天教大家给springboot瘦瘦身。背景现在微服务架构越来越流行,一个项目10多个基于sprin......
  • Configuration of your jobs with .gitlab-ci.yml
    Thisdocumentdescribestheusageof.gitlab-ci.yml,thefilethatisusedbyGitLabRunnertomanageyourproject'sjobs.Fromversion7.12,GitLabCIusesaYA......
  • Idea中1个springboot项目启动N份服务
    使用的idea版本是IntelliJIDEA2022.2.3(UltimateEdition)Build#IU-222.4345.14,builtonOctober5,2022 01  02  从服务ImApplication18081复制......
  • springboot不能识别controller中的接口地址原因汇总
    之前写一个模块的接口,定义好测通没问题发给同事,中间隔了两天加了些内容又测突然就报404找不到。在别的模块controller测试都能测通唯独这个测不通,见了鬼了。百度了好多原......
  • springboot+Elasticsearch 复杂查询
    以前没做过ES里面的查询,第一次接触还是走了点弯路的。就是这个字段你在ES都不用模糊查的话,就可以设置 type=FieldType.Keyword,比如ID之类的。一:建ES存储的实体imp......
  • springboot_03
    1.yam文件书写格式 1.1字面值的表示方式 1.2数组的表示方法 2.yml文件的读取   代码实际随便写个测试@RestController@RequestMapping("/books")publ......
  • SpringBoot使用maven打jar包配置
    在pom.xml文件中加入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>选择你自己的版本</ve......