日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

xxl-job搭建、部署、SpringBoot集成xxl-job

發(fā)布時間:2023/12/19 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 xxl-job搭建、部署、SpringBoot集成xxl-job 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、搭建xxl-job

1、下載xxl-job代碼

  碼云地址:https://gitee.com/xuxueli0323/xxl-job

  gitHub地址:https://github.com/xuxueli/xxl-job

2、執(zhí)行SQL

  在數據庫執(zhí)行 xxl-jobdocdb ables_xxl_job.sql

  

3、導入idea

  導入已存在的模塊:File--New--Module from Existing Sources...

  選擇pom文件,直接導入

4、修改配置文件

  修改配置文件:xxl-jobxxl-job-adminsrcmainesourcesapplication.properties

  調整數據庫連接、控制臺用戶名密碼等內容

  此處特別說明一點,郵箱配置的password并不是郵箱密碼,而是郵箱的授權碼(授權碼獲取步驟自己百度),如果配置成郵箱密碼,當定時任務異常需要發(fā)郵件時,會出現郵件發(fā)送535錯誤。

### 調度中心項目的端口號以及訪問路徑
server.port=8081
server.context-path=/xxl-job-admin

### 配置靜態(tài)文件的前綴
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

### 配置模板文件
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的mapper文件地址
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml

### 配置數據庫的地址
spring.datasource.url=jdbc:mysql://***:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=30
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-interval=30000

### 配置報警郵箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
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

### 調度中心通訊TOKEN,非空時啟用
xxl.job.accessToken=

### 調度中心國際化設置,默認為中文版本,值設置為“en”時切換為英文版本 xxl-job, i18n (default empty as chinese, "en" as english)
xxl.job.i18n=

### 7、管理界面的登錄用戶名密碼
xxl.job.login.username=admin
xxl.job.login.password=123456

  5、啟動項目

運行main函數,訪問http://localhost:8081/xxl-job-admin/toLogin ,輸入用戶名密碼(在application.properties中配置的),登陸,到此為止,xxl-job項目部署成功。

二、項目中使用xxl-job

 1、導入xxl-job依賴

        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.0.2</version>
        </dependency>

 2、配置文件中(application.yml)配置xxl-job配置

  其中appname為項目名

xxl:
job:
accessToken:
executor:
appname: demo
ip:
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: -1
port: 9999
admin:
addresses: http://localhost:8081/xxl-job-admin

 3、添加xxl-job配置類

  直接復制,無需更改。

package com.example.demo.config;

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
public class XXlJobConfig {
    @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(initMethod = "start", destroyMethod = "destroy")
    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;
    }
}

 4、定時任務控制器

 ?。?)定時任務實現類

  此處模擬一個最簡單的打印輸出

package com.example.demo.service;

import org.springframework.stereotype.Service;

@Service
public class DemoJobService {
    public void demoTest(String s1){
        System.out.println("==============" + s1);
    }
}

 ?。?)handler

  此處注解非常重要。

package com.example.demo.handler;

import com.example.demo.service.DemoJobService;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;


@JobHandler(value = "demoHandler")
@Component
@Slf4j
@RequiredArgsConstructor
public class DemoHandler extends IJobHandler {

    private final DemoJobService demoJobService;

    @Override
    public ReturnT<String> execute(String s1) throws Exception {
        XxlJobLogger.log("xxl-job測試任務開始執(zhí)行?!綼rgs: {}】", s1);
        try {
            demoJobService.demoTest(s1);
            XxlJobLogger.log("xxl-job測試任務執(zhí)行結束。");
            return SUCCESS;
        } catch (Exception e) {
            XxlJobLogger.log("xxl-job測試任務執(zhí)行出錯!", e);
            return FAIL;
        }
    }
}

  至此,使用xxl-job的項目配置處理完畢。

三、定時任務執(zhí)行配置

  1、執(zhí)行器配置

  登陸xxl-job控制臺后,點擊執(zhí)行器管理------新增執(zhí)行器。

  執(zhí)行器中內容:

    AppName:在使用xxl-job項目中配置的appname(見第二步中的第2點)

    名稱:隨便填寫(由于可能會多個項目同時使用xxl-job,因此建議一個項目一個執(zhí)行器,且執(zhí)行器名稱直接可以看出是哪個項目)

    排序:1

    注冊方式:自動注入

    機器地址:空(xxl-job會自動掃描識別地址)

 2、定時任務配置

  任務管理---新增

  任務中內容:

    執(zhí)行器:選擇指定的執(zhí)行器

    任務描述:定時任務的名稱

    路由策略:可以根據自己的需要選擇(一般選擇輪詢)

      FIRST(第一個):固定選擇第一個機器

      LAST(最后一個):固定選擇最后一個機器          

      ROUND(輪詢):輪詢執(zhí)行

      RANDOM(隨機):隨機選擇在線的機器;

      CONSISTENT_HASH(一致性HASH):每個任務按照Hash算法固定選擇某一臺機器,且所有任務均勻散列在不同機器上。

      LEAST_FREQUENTLY_USED(最不經常使用):使用頻率最低的機器優(yōu)先被選舉;

      LEAST_RECENTLY_USED(最近最久未使用):最久為使用的機器優(yōu)先被選舉

      FAILOVER(故障轉移):按照順序依次進行心跳檢測,第一個心跳檢測成功的機器選定為目標執(zhí)行器并發(fā)起調度;

      BUSYOVER(忙碌轉移):按照順序依次進行空閑檢測,第一個空閑檢測成功的機器選定為目標執(zhí)行器并發(fā)起調度;

      SHARDING_BROADCAST(分片廣播):廣播觸發(fā)對應集群中所有機器執(zhí)行一次任務,同時系統(tǒng)自動傳遞分片參數;可根據分片參數開發(fā)分片任務;

    Cron:定時任務執(zhí)行時間(此處測試是每秒執(zhí)行一次,所以配置的* * * * * ?)

    運行模式:可根據自己需要選擇(一般選擇BEGAN)

      BEAN模式:任務以JobHandler方式維護在執(zhí)行器端;需要結合 "JobHandler" 屬性匹配執(zhí)行器中任務;

      GLUE模式(Java):任務以源碼方式維護在調度中心;該模式的任務實際上是一段繼承自IJobHandler的Java類代碼并 "groovy" 源碼方式維護,它在執(zhí)行器項目中運行,可使用@Resource/@Autowire注入執(zhí)行器里中的其他服務;

      GLUE模式(Shell):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "shell" 腳本;

      GLUE模式(Python):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "python" 腳本;

      GLUE模式(PHP):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "php" 腳本;

      GLUE模式(NodeJS):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "nodejs" 腳本;

      GLUE模式(PowerShell):任務以源碼方式維護在調度中心;該模式的任務實際上是一段 "PowerShell" 腳本;

    jobHandler:定時任務中@JobHandler注解中的配置

    阻塞處理策略:根據自己需要選擇(一般選擇單機串行)

      單機串行(默認):調度請求進入單機執(zhí)行器后,調度請求進入FIFO隊列并以串行方式運行;

      棄后續(xù)調度:調度請求進入單機執(zhí)行器后,發(fā)現執(zhí)行器存在運行的調度任務,本次請求將會被丟棄并標記為失敗;

      覆蓋之前調度:調度請求進入單機執(zhí)行器后,發(fā)現執(zhí)行器存在運行的調度任務,將會終止運行中的調度任務并清空隊列,然后運行本地調度任務;

    子任務ID:每個任務都擁有一個唯一的任務ID(任務ID可以從任務列表獲取),當本任務執(zhí)行結束并且執(zhí)行成功時,將會觸發(fā)子任務ID所對應的任務的一次主動調度。一般為空。

    任務超時時間:支持自定義任務超時時間,任務運行超時將會主動中斷任務

    失敗重試次數;支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;

    報警郵件:任務調度失敗時郵件通知的郵箱地址,支持配置多郵箱地址,配置多個郵箱地址時用逗號分隔;

    負責人:任務的負責人

    執(zhí)行參數:任務執(zhí)行所需的參數,多個參數時用逗號分隔,任務執(zhí)行時將會把多個參數轉換成數組傳入;

 3、測試

  點擊操作,執(zhí)行一次,然后查看日志,看是否執(zhí)行成功

  

  此處顯示執(zhí)行成功,然后可以在操作按鈕下正式啟動定時任務。

  開啟定時任務后,可見后臺在持續(xù)執(zhí)行(按照配置的一秒輸出一次)

  校驗失敗通知和重試次數:

  在實現類中添加代碼:int k = 10/0;

  查看執(zhí)行日志,失敗了6次(原因是調度平臺配置了失敗后重試5次)

  

  在看調度平臺中配置的異常警告郵件,也是有6次告警。這里可以將異常拋出,并在告警郵件中展示。

四、在docker上部署xxl-job

  1、打包xxl-job-admin

  2、在服務器中創(chuàng)建xxl-job文件夾:mkdir /usr/data/xxl-job

  3、進入新創(chuàng)建的xxl-job文件夾,新建一個dockerfile文件,編輯文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基礎鏡像使用java
FROM java:8
# 作者
MAINTAINER lcl <liconglong@163.com>
# VOLUME 指定了臨時文件目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下創(chuàng)建了一個臨時文件,并鏈接到容器的/tmp
VOLUME /tmp
# 將jar包添加到容器中并更名為app.jar,此處的jar包名稱一定要與要部署的jar包名稱一致
ADD xxl-job-admin-2.1.1-SNAPSHOT.jar app.jar
# 運行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  命令詳解:

    FROM:基礎鏡像名稱

    MAINTAINER:作者信息

    VOLUME:數據掛載

    ADD:項目的 jar 文件作為 “app.jar” 添加到容器的 ENTRYPOINT 執(zhí)行項目 app.jar

    ENTRYPOINT:指定容器啟動時需要執(zhí)行的命令(為了縮短 Tomcat 啟動時間,添加一個系統(tǒng)屬性指向 “/dev/./urandom” 作為 Entropy Source 如果是第一次打包,它會自動下載java 8的鏡像作為基礎鏡像,以后再制作鏡像的時候就不會再下載了)

  4、將xxl-job-admin.jar上傳至xxl-job文件夾

  5、構建新的鏡像

  docker build -t xxl-job-admin . (后面的.一定不要遺漏)

  6、使用xxl-job-admin鏡像啟動新容器

  docker run -d -p 8081:8081 xxl-job-admin

  -d:后臺運行

  -p:端口映射

  7、驗證

  http://ip:8081/xxl-job-admin

  五、調整項目配置

  更改第二步第2點中的xxl-job地址

  六、按照第三步重新配置定時任務即可。

總結

以上是生活随笔為你收集整理的xxl-job搭建、部署、SpringBoot集成xxl-job的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚州视频在线 | 亚洲老老头同性老头交j | 国产视频三区 | 日韩久久久久 | 国产美女无遮挡网站 | 天天操网站 | 91精品福利视频 | av女优天堂在线观看 | 国产视频手机在线播放 | 日韩极品视频 | 国产成人免费在线 | 国产三区在线视频 | www.96av| 中文字幕日本在线观看 | 国产亚洲在线观看 | 国产白丝喷水 | 久久久麻豆 | 天天干,天天操 | 日本人三级 | 久久久久www | 日本黄色片免费看 | 在线无遮挡 | 午夜激情av | 精品一区二区三区欧美 | 天天干夜夜夜 | 亚洲大尺度网站 | 天天爱天天做天天爽 | 免费毛片网站在线观看 | 欧美人与性囗牲恔配 | 久久福利网站 | 成人v精品蜜桃久一区 | 成人一区视频 | 久久97 | 欧美xxxxx视频 | 尼姑福利影院 | 一区二区三区午夜 | 久久国产三级 | 视频在线观看 | 天天操网站 | 亚洲 欧美 变态 另类 综合 | 国产精在线 | 国产精品人人妻人人爽人人牛 | 手机免费看av | 丰满少妇被猛烈进入高清播放 | 国产91精品ai换脸 | 深夜网站在线观看 | 亚洲天堂av网站 | 激情小说亚洲色图 | 男人av的天堂 | 在线观看av日韩 | 高h亲子乱h | 激情视频久久 | www日韩欧美 | 亚洲视频导航 | 美国黄色av| 亚洲九九爱 | 欧美网站在线 | 亚洲 精品 综合 精品 自拍 | 欧美黑人xxxⅹ高潮交 | julia一区二区三区中文字幕 | 天天爱天天做 | 久久人人爽人人 | 成年性生交大片免费看 | 日日摸夜夜添夜夜 | 欧美在线va | 亚洲天堂小视频 | 色播放| 天天爽夜夜爽夜夜爽精品 | 自拍偷拍一区 | 男女啪啪网站 | 精品中文字幕一区二区三区 | 亚洲精品乱码久久久久久蜜桃不卡 | 国产原创剧情av | 日韩精品中文字幕一区二区三区 | 日韩高清在线观看一区 | 欧美在线观看视频一区二区 | 97精品免费视频 | 免费看黄色一级片 | 中文字幕23页 | 亚洲av无码国产精品久久不卡 | 久久久久久久久久久久久久久久久久久 | 久久国精品 | 国产午夜无码精品免费看奶水 | 五月涩 | 性色av蜜臀av浪潮av老女人 | 国产黄色大片视频 | 99精品久久久久久久 | www.麻豆av| 国产一区二区三区四区视频 | 精品欧美一区二区精品久久 | xxxxx亚洲 | 成人福利网址 | 真实乱偷全部视频 | 久久久久成人精品 | 日韩av网站大全 | 国产精品久久国产精品99 | 91爱视频 | 亚洲欧美激情视频 | 老司机精品视频在线播放 |