spring boot 整合xxl-job任务调度框架

以前使用的是azakan服务调度,但是其比较笨重,且为何不方便。。。

故改为xxl-job执行任务调度。。

xxl的调度只需要添加配置项:

添加maven配置

        
            com.xuxueli
            xxl-job-core-beta
            1.9.2
        
package com.trs.idap.config;

import com.xxl.job.core.executor.XxlJobExecutor;
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.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.trs.idap.service.jobhandler")
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(initMethod = "start", destroyMethod = "destroy")
    public XxlJobExecutor xxlJobExecutor() {
        logger.info("<<-----------------初始化分布式调度服务----------------->>");
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setAdminAddresses(adminAddresses);
        xxlJobExecutor.setAppName(appName);
        xxlJobExecutor.setIp(ip);
        xxlJobExecutor.setPort(port);
        xxlJobExecutor.setAccessToken(accessToken);
        xxlJobExecutor.setLogPath(logPath);
        xxlJobExecutor.setLogRetentionDays(-1);
        return xxlJobExecutor;
    }
}

 

配置文件为:

xxl:
    job:
        admin:
            ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
            addresses: http://localhost:8080/xxl-job-admin
        ### xxl-job executor address
        executor:
            appname: ca-service-executor
            ip:
            port: 9999
            ### xxl-job log path
            logpath: /data/applogs/jobService/jobhandler
            ### xxl-job log retention days
            logretentiondays: -1
        ### xxl-job, access token
        accessToken:

注意配置的addresses:是xxl-job服务端的地址。

executor是执行器要执行的参数。。

appname命名要与服务端注册的时候一致;

port:一定是未使用的port,即运行xxl的任务时需要用到该port。。。其他的没多大的意义了。。

 

看一下。。。部署在tomcat中的xxl-job-admin。。默认使用的时tomcat的8080端口。。

spring boot 整合xxl-job任务调度框架_第1张图片

 

默认的用户名和密码直接进入了。。这是我配置好的页面。。。

spring boot 整合xxl-job任务调度框架_第2张图片

1,首先要配置执行器管理。。。

此时AppName就是我们在代码中生命的名称,不能变。。。。

名称是便于自己理解的,见名知意就好。

排序,顺序1,2,3就好。。。随便写

注册方式,选择自动注册就好。

自动注册时机器名称可以不写。。保存。。。

2,此时要维护任务管理

spring boot 整合xxl-job任务调度框架_第3张图片

任务管理中,选择你刚添加的执行器,此时任务列表是,空的。。因为你没有添加任务。。。

此时我们先回到代码中,因为代码中,我们只是配置了xxl-job管理,并没有写真正的任务。。。

此时一定要在config中配置的@ComponentScan(basePackages = "com.trs.idap.service.jobhandler")包下,才能被scan到。。

package com.trs.idap.service.jobhandler;

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;

/**
 * @创建人:Young
 * @时 间: 2019/4/13
 * @描 述: TODO
 */
@JobHandler(value = "test")
@Component
public class TestService extends IJobHandler {
    @Override
    public ReturnT execute(String s)  {
        try {
            System.out.println("获取到的参数是:"+s);
            System.out.println("//todo 我执行test任务了。。。。");
            return ReturnT.SUCCESS;
        }catch (Exception e){
            System.out.println(e.getMessage());
            return ReturnT.FAIL;
        }
    }
}

此时的任务名称是jobHandler是test。。

回到xxl-job-admin,的任务管理中,选择执行器,然后选择新增任务。

spring boot 整合xxl-job任务调度框架_第4张图片

任务描述:自己对任务的描述;

cron:是执行任务的cron时间表达式;

Jobhandler:是在我们代码中定义的jobHandler。

任务参数可选:就是传递到代码中param的一部分。

点击保存。

spring boot 整合xxl-job任务调度框架_第5张图片

启动项目后,你会发现注册成功的日志。。

执行器中也发现了,注册成功ip和端口号。

spring boot 整合xxl-job任务调度框架_第6张图片

此时可以手动点击执行,或者等到配置的cron时间到时执行。。

控制台日志:

将传入的参数整理为json即是:

spring boot 整合xxl-job任务调度框架_第7张图片

页面的执行状态:

spring boot 整合xxl-job任务调度框架_第8张图片

 

此时一组调用就成功。。。

 

其他要写的业务就在java代码中写。。。

 

//todo

你可能感兴趣的:(springcloud,Jhipster,xxl-job)