作者:墨語
前段時間項目上需要用到任務調度,對比了Quartz的不足與XXL-JOB優缺點,整體上:XXL-JOB比Quartz更輕量化,更易上手,還具有可視化界面以及在任務調度、日誌管理、彈性擴容縮容、執行器HA(分布式)、郵件報警、運行報表、全異步、跨平臺、國際化、容器化、線程池隔離等方面更加人性化。
一、源碼下載地址:
下載xxl-job源碼
xxl-job源碼地址:https://github.com/xuxueli/xxl-job
只需要將資料庫配置成自己的,然後生成jar包即可,XXL-JOB的管理器直接通過運行jar包就正常運行;例如:
啟動後效果圖:
運行效果如下:
主頁面:
執行器:
調度日誌:
用戶名密碼在用戶(xxl_job_user)表中;
二、資料庫表創建:
基本支撐的表包括:
有需要建表語句的請關注公眾號後留言即可;
三、集成到項目:
需要本地工程修改的代碼類以及配置文件:XxlJobConfig.java、SampleXxlJob.java、application.properties、logback.xml
核心代碼如下:
XxlJobConfig.java(直接copy到工程即可)
package www.tonghao.com.xxl.job.executor.core.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;
/**
* Create by YSOcean
*/
@Configuration
public class XxlJobConfig {
private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
@Value(&34;)
private String adminAddresses;
@Value(&34;)
private String appName;
@Value(&34;)
private String ip;
@Value(&34;)
private int port;
@Value(&34;)
private String accessToken;
@Value(&34;)
private String logPath;
@Value(&34;)
private int logRetentionDays;
// @Bean(initMethod = &34;, destroyMethod = &34;)
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
logger.info(&34;);
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
// xxlJobSpringExecutor.setAddress(address);
xxlJobSpringExecutor.setAppname(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
}
SampleXxlJob.java(調度執行類)
package www.tonghao.com.xxl.job.executor.service.jobhandler;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;
import www.tonghao.common.utils.SpringUtil;
import www.tonghao.wc.service.WcinOrdersService;
import www.tonghao.wc.web.WcinOrderApiController;
/**
* 任務Handler示例(Bean模式)
*
* 開發步驟:
* 1、繼承&34;:「com.xxl.job.core.handler.IJobHandler」;
* 2、註冊到Spring容器:添加「@Component」註解,被Spring容器掃描為Bean實例;
* 3、註冊到執行器工廠:添加「@JobHandler(value=&34;)」註解,註解value值對應的是調度中心新建任務的JobHandler屬性的值。
* 4、執行日誌:需要通過 &34; 列印執行日誌;
*/
//@JobHandler(value=&34;)
@Component
public class SampleXxlJob extends IJobHandler{
@XxlJob(&34;)
@Override
public ReturnT<String> execute(String s) throws Exception {
XxlJobLogger.log(&34;);
System.out.println(&34;);
//更換即可--start
WcinOrderApiController contr=new WcinOrderApiController();
String msg=contr.getOrder();
//更換即可--end
return SUCCESS;
}
}
logback.xml(直接copy到工程即可)
<?xml version=&34; encoding=&34;?>
<configuration debug=&34; scan=&34; scanPeriod=&34;>
<contextName>logback</contextName>
<property name=&34; value=&34;/>
<appender name=&34; class=&34;>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name=&34; class=&34;>
<file>${log.path}</file>
<rollingPolicy class=&34;>
<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=&34;>
<appender-ref ref=&34;/>
<appender-ref ref=&34;/>
</root>
</configuration>
application.properties(核心配置)
spring.main.web-environment=false
xxl-job admin address list, such as &34; or &34;
xxl.job.admin.addresses=http://127.0.0.1:6081/xxl-job-admin
xxl-job, access token
xxl.job.accessToken=
xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address=
xxl.job.executor.ip=127.0.0.1
xxl.job.executor.port=9999
xxl-job executor log-retention-days
xxl.job.executor.logretentiondays=30
至此,XXL-JOB集成到項目,完成;
使用操作的詳細配置,後續會更新,請持續關注!!!