欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合XxlJob分布式任務(wù)調(diào)度平臺(tái)

 更新時(shí)間:2023年02月28日 08:58:08   作者:llp1110  
xxl-job是一個(gè)開(kāi)源的分布式定時(shí)任務(wù)框架,它可以與其他微服務(wù)組件一起構(gòu)成微服務(wù)集群。它的調(diào)度中心(xxl-job)和執(zhí)行器(自己的springboot項(xiàng)目中有@XxlJob("定時(shí)任務(wù)名稱")的方法)是相互分離,分開(kāi)部署的,兩者通過(guò)HTTP協(xié)議進(jìn)行通信

1.XxlJob簡(jiǎn)介

官方網(wǎng)址:https://www.xuxueli.com/xxl-job

XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。

為什么要使用分布式任務(wù)調(diào)度呢?無(wú)論是針對(duì)分布式項(xiàng)目或者是nginx負(fù)載均衡,傳統(tǒng)的定時(shí)任務(wù)實(shí)現(xiàn)方式都很慢滿足,比如

2.XxlJob快速入門

2.1 下載源碼倉(cāng)庫(kù)地址

源碼倉(cāng)庫(kù)地址Release Download
https://github.com/xuxueli/xxl-jobDownload
http://gitee.com/xuxueli0323/xxl-jobDownload

2.2 定時(shí)任務(wù)實(shí)現(xiàn)步驟

1.在數(shù)據(jù)庫(kù)中執(zhí)行項(xiàng)目中的sql腳本

2.目錄結(jié)構(gòu)說(shuō)明

xxl-job-admin:調(diào)度中心
xxl-job-core:公共依賴
xxl-job-executor-samples:執(zhí)行器Sample示例(選擇合適的版本執(zhí)行器,可直接使用,也可以參考其并將現(xiàn)有項(xiàng)目改造成執(zhí)行器)
    :xxl-job-executor-sample-springboot:Springboot版本,通過(guò)Springboot管理執(zhí)行器,推薦這種方式;
    :xxl-job-executor-sample-frameless:無(wú)框架版本;

3.修改調(diào)度中心配置文件

### web
server.port=8080
server.servlet.context-path=/xxl-job-admin

### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false

### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000

### xxl-job, email報(bào)警郵箱,如果定時(shí)任務(wù)執(zhí)行失敗會(huì)推送消息給該郵箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=XXX@qq.com
spring.mail.from=XXX@qq.com
spring.mail.password=授權(quán)碼
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

### xxl-job, access token 調(diào)度中心通訊TOKEN [選填]:非空時(shí)啟用; 
### 如果配置了通訊token,則調(diào)度中心和執(zhí)行器兩個(gè)服務(wù)的accessToken需保持一致
xxl.job.accessToken=

### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
# 調(diào)度中心國(guó)際化配置 [必填]: 默認(rèn)為 "zh_CN"/中文簡(jiǎn)體, 可選范圍為 "zh_CN"/中文簡(jiǎn)體, "zh_TC"/中文繁體 and "en"/英文;
xxl.job.i18n=zh_CN

## xxl-job, triggerpool max size
# 調(diào)度線程池最大線程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### xxl-job, log retention days
#調(diào)度中心日志表數(shù)據(jù)保存天數(shù) [必填]:過(guò)期日志自動(dòng)清理;限制大于等于7時(shí)生效,否則, 如-1,關(guān)閉自動(dòng)清理功能;
xxl.job.logretentiondays=30

如果已經(jīng)正確進(jìn)行上述配置,可將項(xiàng)目編譯打包部署。

調(diào)度中心訪問(wèn)地址:http://localhost:8080/xxl-job-admin (該地址執(zhí)行器將會(huì)使用到,作為回調(diào)地址)

默認(rèn)登錄賬號(hào) “admin/123456”, 登錄后運(yùn)行界面如下圖所示。

4.配置執(zhí)行器項(xiàng)目

xxl-job-executor-sample-frameless原生方式(不推薦)
“執(zhí)行器”項(xiàng)目:xxl-job-executor-sample-springboot (提供多種版本執(zhí)行器供選擇,現(xiàn)以 springboot 版本為例,可直接使用,也可以參考其并將現(xiàn)有項(xiàng)目改造成執(zhí)行器)
作用:負(fù)責(zé)接收“調(diào)度中心”的調(diào)度并執(zhí)行;可直接部署執(zhí)行器,也可以將執(zhí)行器集成到現(xiàn)有業(yè)務(wù)項(xiàng)目中。

# web port
server.port=8081
# no web
#spring.main.web-environment=false

# 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í)行器通訊TOKEN [選填]:非空時(shí)啟用;
xxl.job.accessToken=

# 執(zhí)行器AppName [選填]:執(zhí)行器心跳注冊(cè)分組依據(jù);為空則關(guān)閉自動(dòng)注冊(cè)
xxl.job.executor.appname=xxl-job-executor-llp
# 執(zhí)行器注冊(cè) [選填]:優(yōu)先使用該配置作為注冊(cè)地址,為空時(shí)使用內(nèi)嵌服務(wù) ”IP:PORT“ 作為注冊(cè)地址。從而更靈活的支持容器類型執(zhí)行器動(dòng)態(tài)IP和動(dòng)態(tài)映射端口問(wèn)題。
xxl.job.executor.address=
# 執(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)獲?。荒J(rèn)端口為9999,單機(jī)部署多個(gè)執(zhí)行器時(shí),注意要配置不同執(zhí)行器端口;
xxl.job.executor.port=0
# 執(zhí)行器運(yùn)行日志文件存儲(chǔ)磁盤路徑 [選填] :需要對(duì)該路徑擁有讀寫(xiě)權(quán)限;為空則使用默認(rèn)路徑;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# 執(zhí)行器日志文件保存天數(shù) [選填] : 過(guò)期日志自動(dòng)清理, 限制值大于等于3時(shí)生效; 否則, 如-1, 關(guān)閉自動(dòng)清理功能;
xxl.job.executor.logretentiondays=30

5.添加執(zhí)行器

6.添加定時(shí)任務(wù)

7.編寫(xiě)測(cè)試程序

package com.xxl.job.executor.service.jobhandler;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class TestXxlJob {
    private static Logger logger = LoggerFactory.getLogger(TestXxlJob.class);
    @XxlJob(value = "testJobHandler", init = "init", destroy = "destroy")
    public void testJobHandler() throws Exception {
        logger.info("進(jìn)入xxlJob定時(shí)任務(wù)。。。。");
    }
    public void init(){
        logger.info("init");
    }
    public void destroy(){
        logger.info("destroy");
    }
    @XxlJob("testJobHandler02")
    public void demoJobHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");
        logger.info("進(jìn)入testJobHandler02定時(shí)任務(wù)。。。。");
    }
}

8.執(zhí)行定時(shí)任務(wù)進(jìn)行測(cè)試

查看調(diào)度日志

3.SpringBoot整合XxlJob

3.1 創(chuàng)建SpringBoot工程引入依賴

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>${穩(wěn)定版}</version>
</dependency>

3.2 編寫(xiě)properties配置文件

# web port
server.port=8081
# no web
#spring.main.web-environment=false

# 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í)行器通訊TOKEN [選填]:非空時(shí)啟用;
xxl.job.accessToken=llp

# 執(zhí)行器AppName [選填]:執(zhí)行器心跳注冊(cè)分組依據(jù);為空則關(guān)閉自動(dòng)注冊(cè)
xxl.job.executor.appname=xxl-job-executor-llp
# 執(zhí)行器注冊(cè) [選填]:優(yōu)先使用該配置作為注冊(cè)地址,為空時(shí)使用內(nèi)嵌服務(wù) ”IP:PORT“ 作為注冊(cè)地址。從而更靈活的支持容器類型執(zhí)行器動(dòng)態(tài)IP和動(dòng)態(tài)映射端口問(wèn)題。
xxl.job.executor.address=
# 執(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=127.0.0.1
# 執(zhí)行器端口號(hào) [選填]:小于等于0則自動(dòng)獲取;默認(rèn)端口為9999,單機(jī)部署多個(gè)執(zhí)行器時(shí),注意要配置不同執(zhí)行器端口;
xxl.job.executor.port=9999
# 執(zhí)行器運(yùn)行日志文件存儲(chǔ)磁盤路徑 [選填] :需要對(duì)該路徑擁有讀寫(xiě)權(quán)限;為空則使用默認(rèn)路徑;
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler
# 執(zhí)行器日志文件保存天數(shù) [選填] : 過(guò)期日志自動(dòng)清理, 限制值大于等于3時(shí)生效; 否則, 如-1, 關(guān)閉自動(dòng)清理功能;
xxl.job.executor.logretentiondays=30

注意,在調(diào)度中心創(chuàng)建任務(wù)時(shí),appname和執(zhí)行器配置的appname必須保持一致; 執(zhí)行器的ip和port建議都配置上

3.3 編寫(xiě)xxljob配置類

@Configuration
public class XxlJobConfig {
    private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
    @Value("${xxl.job.accessToken}")
    private String accessToken;
    @Value("${xxl.job.executor.appname}")
    private String appname;
    @Value("${xxl.job.executor.address}")
    private String address;
    @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.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.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
    /**
     * 針對(duì)多網(wǎng)卡、容器內(nèi)部署等情況,可借助 "spring-cloud-commons" 提供的 "InetUtils" 組件靈活定制注冊(cè)IP;
     *
     *      1、引入依賴:
     *          <dependency>
     *             <groupId>org.springframework.cloud</groupId>
     *             <artifactId>spring-cloud-commons</artifactId>
     *             <version>${version}</version>
     *         </dependency>
     *
     *      2、配置文件,或者容器啟動(dòng)變量
     *          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
     *
     *      3、獲取IP
     *          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
     */
}

3.4 編寫(xiě)job類進(jìn)行測(cè)試

@Component
public class TestXxlJob {
    private static Logger logger = LoggerFactory.getLogger(TestXxlJob.class);
    @XxlJob(value = "testJobHandler", init = "init", destroy = "destroy")
    public void testJobHandler() throws Exception {
        logger.info("進(jìn)入xxlJob定時(shí)任務(wù)。。。。");
    }
    public void init(){
        logger.info("init");
    }
    public void destroy(){
        logger.info("destroy");
    }
    @XxlJob("testJobHandler02")
    public void demoJobHandler() throws Exception {
        XxlJobHelper.log("XXL-JOB, Hello World.");
        logger.info("進(jìn)入testJobHandler02定時(shí)任務(wù)。。。。");
    }
}

創(chuàng)建執(zhí)行器

創(chuàng)建任務(wù)

查看后臺(tái)執(zhí)行日志

如果需要xxlJob郵件報(bào)警功能,則需要在xxl-job-admin中進(jìn)行配置郵件信息,并在創(chuàng)建任務(wù)時(shí)指定配置的郵箱地址

### xxl-job, email報(bào)警郵箱,如果定時(shí)任務(wù)執(zhí)行失敗會(huì)推送消息給該郵箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=XXX@qq.com
spring.mail.from=XXX@qq.com
spring.mail.password=授權(quán)碼
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

ps:如果定時(shí)任務(wù)執(zhí)行頻率很高,頻繁失敗的話,那收郵件就是一個(gè)噩夢(mèng)~

4.XxlJob部署

4.1 jar包部署方式

jar包部署的方式比較簡(jiǎn)單,將項(xiàng)目編譯打包部署到服務(wù)器上,其他服務(wù)和xxljob調(diào)度器之間網(wǎng)絡(luò)、接口相通即可

4.2 Docker 鏡像方式搭建調(diào)度中心

下載鏡像

# Docker地址:https://hub.docker.com/r/xuxueli/xxl-job-admin/     (建議指定版本號(hào))
docker pull xuxueli/xxl-job-admin
# 如需自定義 mysql 等配置,可通過(guò) "-e PARAMS" 指定,參數(shù)格式 PARAMS="--key=value  --key2=value2" ;
# 配置項(xiàng)參考文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties
# 如需自定義 JVM內(nèi)存參數(shù) 等配置,可通過(guò) "-e JAVA_OPTS" 指定,參數(shù)格式 JAVA_OPTS="-Xmx512m" ;
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin  -d xuxueli/xxl-job-admin:{指定版本}

到此這篇關(guān)于SpringBoot整合XxlJob分布式任務(wù)調(diào)度平臺(tái)的文章就介紹到這了,更多相關(guān)SpringBoot整合XxlJob內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot?多租戶SaaS搭建方案

    Springboot?多租戶SaaS搭建方案

    這篇文章主要介紹了Springboot?多租戶SaaS方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例

    Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例

    今天小編就為大家分享一篇關(guān)于Java正確實(shí)現(xiàn)一個(gè)單例設(shè)計(jì)模式的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Seata?環(huán)境搭建部署過(guò)程

    Seata?環(huán)境搭建部署過(guò)程

    Seata是一個(gè)分布式事務(wù),seata服務(wù)端也是一個(gè)微服務(wù),需要和其他微服務(wù)一樣需要注冊(cè)中心和配置中心,這篇文章主要介紹了Seata?環(huán)境搭建,需要的朋友可以參考下
    2022-10-10
  • Java 壓縮圖片并打包成ZIP文件的示例

    Java 壓縮圖片并打包成ZIP文件的示例

    這篇文章主要介紹了Java 壓縮圖片并打包成ZIP文件的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java封裝數(shù)組之改進(jìn)為泛型數(shù)組操作詳解

    Java封裝數(shù)組之改進(jìn)為泛型數(shù)組操作詳解

    這篇文章主要介紹了Java封裝數(shù)組之改進(jìn)為泛型數(shù)組操作,結(jié)合實(shí)例形式詳細(xì)分析了Java封裝數(shù)組為泛型數(shù)組相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Java方法參數(shù)是引用調(diào)用還是值調(diào)用?

    Java方法參數(shù)是引用調(diào)用還是值調(diào)用?

    Java方法參數(shù)是引用調(diào)用還是值調(diào)用?這是一個(gè)值得思考的問(wèn)題。閱讀本文,找出答案
    2016-02-02
  • 詳解全局事務(wù)注解@GlobalTransactional的識(shí)別

    詳解全局事務(wù)注解@GlobalTransactional的識(shí)別

    這篇文章主要為大家介紹了詳解全局事務(wù)注解@GlobalTransactional的識(shí)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • SpringCloud?Eureka服務(wù)治理之服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)

    SpringCloud?Eureka服務(wù)治理之服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)

    這篇文章主要介紹了SpringCloud?Eureka服務(wù)治理服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java原子操作CAS原理解析

    Java原子操作CAS原理解析

    這篇文章主要介紹了Java原子操作CAS原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn)

    Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn)

    本文主要介紹了Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論