添加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,转载请注明。