1. POM is introduced. Note: the version number should be consistent with XXL job admin.
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.9.2-SNAPSHOT</version>
</dependency>
2ćapplication.yml
xxl:
job:
admin:
addresses: http://47.102.168.36:9500
executor:
log-path: ${catalina.home:/usr}/logs/job
log-retention-days: 30
ip: 127.0.0.1
port: 10001
3. Configure executor bean
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.Configuration;
/**
* xxl-job config
*/
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${spring.application.name}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private Integer port;
@Value("${xxl.job.executor.log-path}")
private String logPath;
@Value("${xxl.job.executor.log-retention-days}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobExecutor xxlJobExecutor() {
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
xxlJobExecutor.setAdminAddresses(adminAddresses);
xxlJobExecutor.setAppName(appName);
xxlJobExecutor.setIp(ip);
xxlJobExecutor.setPort(port);
xxlJobExecutor.setPort(-1);
xxlJobExecutor.setAccessToken(null);
xxlJobExecutor.setLogPath(logPath);
xxlJobExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobExecutor;
}
}
4. Task code
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* JOB
*/
@JobHandler(value = "iFlyTenantJob")
@Component
public class IFlyTenantJob extends IJobHandler {
private static final Logger log = LoggerFactory.getLogger(IFlyTenantJob.class);
@Override
public ReturnT<String> execute(String s) {
XxlJobLogger.log("The mission begins...") ;
log.info("Task started...");
iFlyAiService.queryTenants();
try {
Thread.sleep(6000);
//int a = 1/0;
} catch (InterruptedException e) {
e.printStackTrace();
}
XxlJobLogger.log("End of mission...");
log.info("End of mission...");
return ReturnT.SUCCESS;
}
}