SpringBoot使用XxlJob

第一步:在SpringBoot项目中添加XXLJob的配置文件

package com.leyou.item.config;

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.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * xxl-job config
 *
 * @author xuxueli 2017-04-28
 */
@Configuration
@ComponentScan(basePackages = "com.leyou.item.job")   //配置为job所在的包名路径下
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 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;
    }

}

第二步:在启动类上方添加注解  @EnableTransactionManagement,为的是在类启动的时候也启动XxlJob

第三步

  1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
  2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
  3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
  4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
  5、任务执行结果枚举:SUCCESS、FAIL、FAIL_TIMEOUT

package com.leyou.item.job;

import com.leyou.item.pojo.Brand;
import com.leyou.item.service.BrandService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/***
 * 开发步骤:
 *   1、继承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;
 *   2、注册到Spring容器:添加“@Component”注解,被Spring容器扫描为Bean实例;
 *   3、注册到执行器工厂:添加“@JobHandler(value="自定义jobhandler名称")”注解,注解value值对应的是调度中心新建任务的JobHandler属性的值。
 *   4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
 *   5、任务执行结果枚举:SUCCESS、FAIL、FAIL_TIMEOUT
 */
@JobHandler(value = "TestJob")
@Component
@Slf4j
public class TestJob extends IJobHandler {

    @Autowired
    private BrandService brandService;

    private final static Logger logger = LoggerFactory.getLogger(TestJob.class);

   @Override
   public ReturnT<String> execute(String id) throws Exception{

       XxlJobLogger.log(this.getClass().getSimpleName() + "==========开始执行job" );
       try {
           logger.info("====开始测试job====温娉哲================");
           Brand brand = brandService.queryBrandById(Long.valueOf(id));
       } catch (Exception e) {
           logger.error(e.getMessage(),e);
           throw e;
       }
        XxlJobLogger.log(this.getClass().getSimpleName()+"===========结束执行job");

       return ReturnT.SUCCESS;

   }
}

第四步:打开任务调度中心管理平台,添加执行器,新增任务,启动定时器。

第五步:在yml配置文件中添加xxlJob 的配置信息,appname是任务调度中心配置的英文名,port也是任务调度中心配置的端口号,注意配置的信息要和任务调度中心配置的信息一致。

xxl:
  job:
    admin:
      addresses: http://192.168.22.67:8080/xxl-job-admin
    executor:
      appname: testDemoJob
      ip:
      port: 9995
      logpath: /data/xxl-job/jobhandler
      logretentiondays: -1
    accessToken:

第六步:启动项目,开启定时器,查看执行日志显示执行成功。corn表达式配置的是每隔两秒执行一次,如下显示。

发布了176 篇原创文章 · 获赞 185 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Sophia_0331/article/details/103793296