手把手教你實(shí)現(xiàn)xxl-job分布式任務(wù)調(diào)度平臺(tái)搭建
閱讀本文大概需要 4.5 分鐘。
編輯:業(yè)余草
推薦:https://www.xttblog.com/?p=5097
github:https://github.com/xuxueli/xxl-job。我這里下載使用的是 2.1.2 版本,下載完成后解壓,然后使用 IDEA 的Import Project 導(dǎo)入到 IDE 中,注意使用 Maven 方式導(dǎo)入。


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

http://localhost:8080/xxl-job-admin?就能看到 xxl-job-admin 的監(jiān)控平臺(tái)了,默認(rèn)用戶名 admin,密碼 123456。
https://www.xuxueli.com/xxl-job/,有興趣的同學(xué)可以自行查閱 項(xiàng)目結(jié)構(gòu)如下:
????com.xuxueli
????xxl-job-core
????2.1.2
#?web?port
server.port=8081
#?log?config
logging.config=classpath:logback.xml
###?調(diào)度中心部署跟地址?[選填]:如調(diào)度中心集群部署存在多個(gè)地址則用逗號(hào)分隔。執(zhí)行器將會(huì)使用該地址進(jìn)行"執(zhí)行器心跳注冊(cè)"和"任務(wù)結(jié)果回調(diào)";為空則關(guān)閉自動(dòng)注冊(cè);
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
###?執(zhí)行器AppName [選填]:執(zhí)行器心跳注冊(cè)分組依據(jù);為空則關(guān)閉自動(dòng)注冊(cè)
xxl.job.executor.appname=xxl-job-executor-sample
###?執(zhí)行器IP [選填]:默認(rèn)為空表示自動(dòng)獲取IP,多網(wǎng)卡時(shí)可手動(dòng)設(shè)置指定IP,該IP不會(huì)綁定Host僅作為通訊實(shí)用;地址信息用于?"執(zhí)行器注冊(cè)"?和?"調(diào)度中心請(qǐng)求并觸發(fā)任務(wù)";
xxl.job.executor.ip=
###?執(zhí)行器端口號(hào)?[選填]:小于等于0則自動(dòng)獲取;默認(rèn)端口為9999,單機(jī)部署多個(gè)執(zhí)行器時(shí),注意要配置不同執(zhí)行器端口;
xxl.job.executor.port=9999
###?執(zhí)行器通訊TOKEN [選填]:非空時(shí)啟用;
xxl.job.accessToken=
###?執(zhí)行器運(yùn)行日志文件存儲(chǔ)磁盤路徑?[選填]?:需要對(duì)該路徑擁有讀寫權(quán)限;為空則使用默認(rèn)路徑;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
###?執(zhí)行器日志文件保存天數(shù)?[選填]?:?過期日志自動(dòng)清理, 限制值大于等于3時(shí)生效;?否則, 如-1, 關(guān)閉自動(dòng)清理功能;
xxl.job.executor.logretentiondays=30
<configuration?debug="false"?scan="true"?scanPeriod="1?seconds">
????<contextName>logbackcontextName>
????<property?name="log.path"?value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>
????<appender?name="console"?class="ch.qos.logback.core.ConsoleAppender">
????????<encoder>
????????????<pattern>%d{HH:mm:ss.SSS}?%contextName?[%thread]?%-5level?%logger{36}?-?%msg%npattern>
????????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}.zipfileNamePattern>
????????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>
@Configuration
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
????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;
????}
}
@Component
public?class?DemoXxxlJob?{
????@XxlJob("demoJobHandler")
????public?ReturnT?demoJobHandler(String?param)?throws?Exception? {
????????XxlJobLogger.log("XXL-JOB,?Hello?World.");
????????for?(int?i?=?0;?i?5;?i++)?{
????????????XxlJobLogger.log("beat?at:"?+?i);
????????????TimeUnit.SECONDS.sleep(2);
????????}
????????return?ReturnT.SUCCESS;
????}
}





微信掃描二維碼,關(guān)注我的公眾號(hào)
朕已閱?

