IDEA快速XXL-JOB

上级文章:

IDEA快速Sringmvc+Maven:https://blog.csdn.net/qq_28033719/article/details/103411676


XXL-JOB是分布式的定时调度任务较于Quartz,当然作为测试用的话可以单机搭建一个,然后的话后续可以做扩展应用。

先下载一个XXL-JOB的源码项目,直接按照官网的文档搞进行了:

https://www.xuxueli.com/xxl-job/#2.1%20%E5%88%9D%E5%A7%8B%E5%8C%96%E2%80%9C%E8%B0%83%E5%BA%A6%E6%95%B0%E6%8D%AE%E5%BA%93%E2%80%9D

主要是几个步骤:

1、完成主项目启动     2、完成调度项目配置     3、建立定时任务到主项目,测试运行即可


XXL-JOB(xxl-job的后台项目)主要三个文件

IDEA快速XXL-JOB_第1张图片

(1)sql文件需要把它弄到mysql数据库执行建立相应数据库以及表格(有相应的Oracle版本,但是Oracle指定标识符不超过30字符,XXL-JOB的Oracle版本已经有字段超过30字符,所以不太好用我就没折腾)

(2)application.properties 配置好

### 找到自己改配置
server.port=8080
server.context-path=/xxl-job-admin

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8

spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

### 登录账号,这个需要自己加
xxl.job.login.username=admin
xxl.job.login.password=123456

(3)然后 XxlJobAdminApplication.java这个类就启动就可以,访问你指定的URL,按照账号登录


然后是配置调度项目(就是你需要xxl-job调度的项目,或者自己的主项目)

IDEA快速XXL-JOB_第2张图片

项目里面的pom添加调度任务还有日志

    
    
    
      com.xuxueli
      xxl-job-core
      2.1.1
    

    
    
      org.slf4j
      log4j-over-slf4j
      1.7.25
    

xxl-job.properties

# 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:8080/xxl-job-admin

### xxl-job executor address
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999

### xxl-job, access token
xxl.job.accessToken=

### xxl-job log path
xxl.job.executor.logpath=classpath:/data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays=30

DemoJobHandler,创建第一个模板调度任务java类

在xxl-job的后台项目,这里可以拿到完整的,然后复制粘贴到你的主项目,也可以直接在xxl-job运行一下测试

IDEA快速XXL-JOB_第3张图片

package org.angular.test.xxljob;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import org.springframework.stereotype.Component;


/**
 * 任务Handler示例(Bean模式)
 * demoJobHandler是你在主项目新建调度任务的命名,需要记住
 */
@JobHandler(value = "demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {

    @Override
    public ReturnT execute(String param) throws Exception {
        System.out.println("XXL-JOB Hello World");
        return SUCCESS;
    }
}

XxlJobConfig.java

xxl-job后台项目,在这里可以拿到完整的

IDEA快速XXL-JOB_第4张图片

package org.angular.test.xxljob;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

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

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.executor.appname}")
    private String appName;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


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

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


}

然后配好之后,把这个项目启动一下,有任何异常都得先解决再进行


完成定时调度项目代码和配置后

最后就是新建定时任务,查看一下官网怎么建立就行,前两个大步骤,xxl-job和自己的主项目都没报错,都不是问题了。剩下毕竟已经是应用级的操作。

看到按秒计算的定时任务跑起来,并且持续输出和定时页面日志也持续输出就表示完成了。


接下来需要两个步骤

IDEA快速XXL-JOB_第5张图片

1、执行器管理 -> 新建执行器(执行器命名和你项目配置文件,xxl.job.executor.appname的命名一致) 

IDEA快速XXL-JOB_第6张图片

2、任务管理 -> 选好你的执行器下新建任务

IDEA快速XXL-JOB_第7张图片

如果上面漏了一步,也是怎么也执行不到


然后你的项目控制台得到这样的输出,而且在页面调度日志显示执行成功,就表明你的xxl-job调度程序已经完成,编写你的业务代码吧

IDEA快速XXL-JOB_第8张图片IDEA快速XXL-JOB_第9张图片


下级文章:

XXL-JOB 调度项目重发送retry问题:https://blog.csdn.net/qq_28033719/article/details/103609183

XXL-JOB 项目发送 returnT 的content一直为null:https://blog.csdn.net/qq_28033719/article/details/103610330

XXL-JOB 调度项目发送中文乱码:https://blog.csdn.net/qq_28033719/article/details/103634492

XXL-JOB设置前规则后规则:https://blog.csdn.net/qq_28033719/article/details/103701084

你可能感兴趣的:(idea,xxl-job,Java)