首先声明,本篇博文基于springboot,基于spring的请自行研究。
(一)启动控制平台
首先将xxl-job-master.zip下载下来,然后在mysql数据库创建xxl-job数据库。
执行数据库:
用tomcat启动xxl-job-admin以后,打开页面:http://localhost:8081/xxl-job-admin/(用户名:admin 密码:123456)
然后在页面上创建执行器和任务。
(二)创建执行器
第一步:创建maven项目
第二步:修改pom.xml文件,加入如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> </parent> <dependencies> <!-- jetty --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-http</artifactId> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-io</artifactId> </dependency> <!-- spring-boot-starter-web (spring-webmvc + tomcat) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.9.0-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin </artifactId> </plugin> </plugins> </build>
第三步:在resources目录下添加application.properties和logback.xml
# web port server.port=8084 # log config logging.config=classpath:logback.xml # xxl-job ### xxl-job admin address list, such as "http://address" or "http://address01,http://address02" xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin ### xxl-job executor address xxl.job.executor.appname=ececutor01 xxl.job.executor.ip=10.1.1.23 xxl.job.executor.port=9999 ### xxl-job log path xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/ ### xxl-job, access token xxl.job.accessToken=
<?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-executor-sample-springboot.log"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter" > <level>WARN</level> </filter>--> <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> <!--<logger name="com.xxl.job.executor.service.info" level="WARN" additivity="false"> <appender-ref ref="console"/> <appender-ref ref="file"/> </logger>--> </configuration>
接着,按照如下创建包和类:
XxlJobConfig:
package com.jump.config; 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.ComponentScan; import org.springframework.context.annotation.Configuration; /** * */ @Configuration @ComponentScan(basePackages = "com.xxl.job.executor.service.jobhandler") public class XxlJobConfig { private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class); @Value("${xxl.job.admin.addresses}") private String addresses; @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.executor.logpath}") private String logpath; @Value("${xxl.job.accessToken}") private String accessToken; @Bean(initMethod = "start", destroyMethod = "destroy") public XxlJobExecutor xxlJobExecutor() { logger.info(">>>>>>>>>>> xxl-job config init."); XxlJobExecutor xxlJobExecutor = new XxlJobExecutor(); xxlJobExecutor.setIp(ip); xxlJobExecutor.setPort(port); xxlJobExecutor.setAppName(appname); xxlJobExecutor.setAdminAddresses(addresses); xxlJobExecutor.setLogPath(logpath); xxlJobExecutor.setAccessToken(accessToken); return xxlJobExecutor; } }
MyJobHandler:
package com.jump.handler; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.annotation.JobHander; import com.xxl.job.core.log.XxlJobLogger; /** * @author Jump * @version 创建时间:2019年1月22日 下午1:25:13 类说明 */ @JobHander(value = "myJobHandler") @Service public class MyJobHandler extends IJobHandler { @Value("${xxl.job.executor.port}") private String port; @Override public ReturnT<String> execute(String... params) throws Exception { XxlJobLogger.log("XXL-JOB, Hello World." + port); System.out.println("XXL-JOB, Hello World." + port); for (int i = 0; i < 5; i++) { XxlJobLogger.log("beat at:" + i); // TimeUnit.SECONDS.sleep(2); } return ReturnT.SUCCESS; } }
App:
package com.jump; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author Jump * @version 创建时间:2019年1月22日 下午1:27:28 类说明 */ @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
然后右键run,就能开启任务执行器。