添加XXL-Job依赖
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency>
编写简单的任务调度例子
新增logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName>
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration> 配置文件
#----------xxl-job配置-------------- logging.config=classpath:logback.xml #调度中心部署地址,多个配置逗号分隔 "http://address01,http://address02" xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin #执行器token,非空时启用 xxl-job, access token xxl.job.accessToken=dbc655.top # 执行器app名称,和控制台那边配置一样的名称,不然注册不上去 xxl.job.executor.appname=dbc-test # [选填]执行器注册:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。 #从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 xxl.job.executor.address= #[选填]执行器IP :默认为空表示自动获取IP(即springboot容器的ip和端口,可以自动获取,也可以指定),多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务", xxl.job.executor.ip= # [选填]执行器端口号:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; xxl.job.executor.port=9999 #执行器日志文件存储路径,需要对该路径拥有读写权限;为空则使用默认路径 xxl.job.executor.logpath=./data/logs/xxl-job/executor #执行器日志保存天数 xxl.job.executor.logretentiondays=30
config配置类——XxlJobConfig
package com.example.test05.demo.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.Configuration;
@Configuration
public class XxlJobConfig {
private Logger log = 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;
//旧版的有bug
//@Bean(initMethod = "start", destroyMethod = "destroy")
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.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;
}
} 创建第一个XXL-Job分布式调度任务
MyJobHandler
package com.example.test05.demo.jpb;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class MyJobHandler {
private Logger log = LoggerFactory.getLogger(MyJobHandler.class);
@XxlJob(value = "demoJobHandler",init = "init",destroy = "destroy")
public ReturnT<String> execute(String param){
log.info("dbc方法调用成功——"+ LocalDateTime.now());
return ReturnT.SUCCESS;
}
private void init(){
log.info("init 方法被调用");
}
private void destroy(){
log.info("destroy 方法被调用");
}
}
在xxl-job控制台浅浅操作
我们的控制台输出如下
点击查看完整内容
22:11:07.585 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - init 方法被调用 22:11:07.596 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:07.596 22:11:35.348 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:35.348 22:11:36.329 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:36.329 22:11:37.320 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:37.320 22:11:38.323 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:38.323 22:11:39.262 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:39.262 22:11:40.316 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:40.316 22:11:41.326 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:41.326 22:11:42.316 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:42.316 22:11:43.315 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:43.315 22:11:44.326 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:44.326 22:11:45.325 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:45.325 22:11:46.319 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:46.319 22:11:47.327 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:47.327 22:11:48.315 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:48.315 22:11:49.326 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:49.326 22:11:50.317 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:50.317 22:11:51.331 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:51.331 22:11:52.316 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:52.316 22:11:53.324 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:53.324 22:11:54.318 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:54.318 22:11:55.321 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:55.321 22:11:56.318 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:56.318 22:11:57.315 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - dbc方法调用成功——2022-07-04T22:11:57.315 22:13:30.562 logback [Thread-32] INFO c.e.test05.demo.jpb.MyJobHandler - destroy 方法被调用 22:13:30.562 logback [Thread-32] INFO com.xxl.job.core.thread.JobThread - >>>>>>>>>>> xxl-job JobThread stoped, hashCode:Thread[Thread-32,10,main]
本文作者为DBC,转载请注明。
