第一步:在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表达式配置的是每隔两秒执行一次,如下显示。