XXL-Job的基本使用

一、市面上常見的任務調度產品

????????針對分布式任務調度的需求,市場上出現了很多的產品:

? ? ? ? ?其中XXL-job?是我們經常使用的任務調度平臺,XXL這三個英文字母.是以作者名許雪里命名的。

????????可以前往 Gitee 地址進行下載使用

https://gitee.com/xuxueli0323/xxl-job.git

?

二、XXL-JOB的基本使用?

? ? ? ? 在Gitee地址下載完XXL-job?的項目后,項目的結構如下:

2.1、啟動xxl-job-admin服務

? ? ? ? ?首先啟動xxl-job-admin,并在配置文件中修改對應的端口號以及虛擬路徑,配置文件中部分默認的參數如下:

?

????????xxl-job-admin服務是XXL-JOBweb頁面端,所以啟動完xxl-job-admin服務后,可以訪問:

http://localhost:8080/xxl-job-admin/

賬號:admin

密碼:123456

?????????

2.2、登陸xxl-job的web頁面

2.2.1、執行器管理

? ? ? ? 執行器管理頁面中有一個默認的執行器xxl-job-executor-sample,下面來介紹如何編輯執行器。

????????AppName是執行器的唯一標示,所以不能重復

? ? ? ? 名稱可以自己隨便寫,但是最好見名知意,幫助我們快速的了解這個執行器的作用。

? ? ? ? 注冊方式是調度中心獲取執行器地址的方式 ,一般選自動注冊。

自動注冊和手動錄入的區別:

?

總結:????????? ?

?

2.2.2、任務管理?

? ? ? ? 任務管理頁面是用來編輯任務執行的,下面來介紹如何編輯任務管理。

執行器:每一個任務要對應一個執行器,所以要選擇一個執行器,可供選擇的執行器,就是在2.2.1中編輯好的執行器。

任務描述:此次任務的作用是什么。

負責人:這個任務的負責人是誰。

調度類型:CRON、無、固定速度

????????CRON:是通過CRON表達式來控制任務調用的時間,這個在后面會做一個詳細的介紹。

????????無:不調用

????????固定速度:以固定的時間進行調用,例如每隔5秒進行調用,這個通過CRON表達式也能實現,所以不推薦使用固定速度。

運行模式:運行模式主要分為BEANGLUEBEAN是通過java代碼進行運行,GLUE是通過腳本的方式進行運行(有些銀行的就是采用這種方式)

JobHander:運行模式采用BEAN,右邊就會出現JobHander,JobHander中的值可以任意寫,但是要和代碼中的值保持一致,代碼中通過@XxlJob注解和JobHander中的值相對應

路由策略:

????????當執行器集群部署時,提供豐富的路由策略

阻塞處理策略:調度過于密集執行器來不及處理時的處理策略

?

2.3、啟動xxl-job-executor-sample-springboot

?xxl-job-executor-sample-springboot?中配置文件里面需要注意的有:

????????xxl.job.admin.addresses:對應2.1中web頁面的IP地址、端口號、虛擬路徑等

????????xxl.job.executor.appname:對應2.2.1中執行器的AppName

????????xxl.job.executor.port:對應執行器的端口號(和server.port中的端口號不一樣)。

? ? ? ?

在?xxl-job-executor-sample-springboot中可以看見XxlJobConfig用來讀取配置文件中的值

package 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;/*** xxl-job config** @author xuxueli 2017-04-28*/
@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;@Beanpublic 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;}/*** 針對多網卡、容器內部署等情況,可借助 "spring-cloud-commons" 提供的 "InetUtils" 組件靈活定制注冊IP;**      1、引入依賴:*          <dependency>*             <groupId>org.springframework.cloud</groupId>*             <artifactId>spring-cloud-commons</artifactId>*             <version>${version}</version>*         </dependency>**      2、配置文件,或者容器啟動變量*          spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'**      3、獲取IP*          String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();*/}

SampleXxlJob類中,用來執行任務。

@Component
public class SampleXxlJob {private static Logger logger = LoggerFactory.getLogger(SampleXxlJob.class);/*** 1、簡單任務示例(Bean模式)*/@XxlJob("demoJobHandler")public void demoJobHandler() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");for (int i = 0; i < 5; i++) {System.out.println("執行了第"+i+"次");//XxlJobHelper.log("beat at:" + i);TimeUnit.SECONDS.sleep(2);}// default success}
}

????????SampleXxlJob中@XxlJob的值要和2.2.2任務管理中JobHander的值保持一致。再啟動xxl-job-executor-sample-springboot服務。

? ? ? ? 啟動了xxl-job-executor-sample-springboot服務以及xxl-job-admin服務后,在任務管理頁面點擊執行一次,即可發起調用。

發現調用成功

?

三、?Corn表達式

? ? ? ? 2.2.2中可以通過Corn表達式來控制任務調度的時間,以下是Corn表達式中符號的含義?

? ? ? ? 以下面這個?Corn表達式為例

? ? ? ??

6-21:在時域,表示從早上6點到晚上9點執行。(“-”:指定一個范圍,可以看上表)

0/5:在分域,表示每5分鐘執行一次。(“/”:表示遞增,可以看上表)

0:在秒域,表示第0秒執行。

連起來就是:早上6點到晚上9點這個時間段內,每隔5分鐘執行一次。

例如:06:05:00、06:10:00、06:15:00、06:20:00、06:25:00,一直執行到晚上9點55分。

????????另外:我后面在天域和月域中設置了通配符“*”,表示每月的每天執行。所以就是永遠在執行,所以在年域和周域用“?”,“不指定”也不影響。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717896.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717896.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717896.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用`paddle.nn.Layer`自定義網絡教程

文章目錄 使用paddle.nn.Layer自定義網絡教程1. 概念介紹2. 數據處理3. 搭建一個完整的深度學習網絡4. 使用paddle.nn.Layer構建深度學習網絡5. 利用paddle.nn.Layer進行子層的訪問6. 修改paddle.nn.Layer層的成員變量7. 存儲模型的參數8. 總結 使用paddle.nn.Layer自定義網絡教…

LockBit病毒入侵揭秘:如何防范與應對

在數字時代&#xff0c;隨著科技的飛速發展&#xff0c;網絡安全問題愈發凸顯。惡意軟件和勒索軟件等網絡威脅正不斷演變&#xff0c;其中一款備受關注的勒索軟件就是LockBit。本文將深入介紹LockBit的特征、攻擊手段、演進歷程以及對網絡安全的威脅。 01 主要特征 LockBit是…

算法知識(java)隨筆

1: 保留指定的小數為 printf("%.2f\n", ret) 和c語言類似 // 怎么保留小數 System.out.printf("%.2f\n", 1.0/3); 2: 在寫小數二分的時候 加入讓結果保留6位數 那么 while(r - l > 1e-8) 3: java Map里面之前寫的代碼: /*** 也就是 統計x在map里面的…

第二十一周周報

文獻閱讀&#xff1a;Recent Advances of Monocular 2D and 3D Human Pose Estimation: A Deep Learning Perspective 摘要&#xff1a;在本文中&#xff0c;作者提供了一個全面的 2d到3d視角來解決單目人體姿態估計的問題。首先&#xff0c;全面總結了人體的二維和三維表征。…

騰訊云Windows輕量應用服務器的默認密碼是什么,以及如何重置?

首先&#xff0c;騰訊云輕量應用服務器的默認用戶名是沒有設置密碼的&#xff0c;首次登錄時需要重置密碼。這意味著如果你的輕量應用服務器是騰訊云的&#xff0c;那么默認密碼是不存在的&#xff0c;需要通過重置密碼來獲得一個新的密碼。 關于如何重置密碼&#xff0c;有幾…

chatgpt新版本api的調用

chatgpt新版本api的調用 原始版本調用api方式&#xff1a;新版調用chatgpt-api的方式&#xff1a; 原始版本調用api方式&#xff1a; import openaiopenai.api_key "{上面復制的key}"completion openai.ChatCompletion.create(model"gpt-3.5-turbo",mes…

Spring El表達式官方文檔學習

文章目錄 推薦一、概述1、什么是SpEL2、SpEL能做什么 二、SpEL表達式使用1、文字表達式2、屬性, 數組, List, Map,和 索引&#xff08;1&#xff09;屬性操作&#xff08;2&#xff09;數組和List&#xff08;3&#xff09;Map 3、內嵌List4、內嵌Map5、構建數組6、調用類的方法…

Windows的Linux化持續推進中

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

Java基礎 - 6 - 面向對象(二)

Java基礎 - 6 - 面向對象&#xff08;一&#xff09;-CSDN博客 二. 面向對象高級 2.1 static static叫做靜態&#xff0c;可以修飾成員變量、成員方法 2.1.1 static修飾成員變量 成員變量按照有無static修飾&#xff0c;分為兩種&#xff1a;類變量、實例變量&#xff08;對象…

JavaScript 語句語法的教程

JavaScript 是一種廣泛應用于網頁開發的腳本語言&#xff0c;熟練掌握 JavaScript 的語法是成為一名優秀的前端開發工程師的必備技能之一。本教程將詳細介紹 JavaScript 中的語句語法&#xff0c;幫助初學者快速入門并加深對 JavaScript 語法的理解。 一、注釋 在 JavaScript…

常見的爬蟲逆向面試題

文章轉載于&#xff1a;https://mp.weixin.qq.com/s/dXRo0D_Xx7E_h85XbnwPVQ 有興趣去源站瀏覽學習 主要自己看著方便些 1.HTTS三次握手 目前使用的 HTTP/HTTPS 協議是基于 TCP 協議之上的&#xff0c;因此也需要三次握手。在 TCP 三次握手建立鏈接之后&#xff0c;才會進行 …

故障診斷 | 一文解決,XGBoost極限梯度提升樹的故障診斷(Matlab)

效果一覽 文章概述 故障診斷 | 一文解決,XGBoost極限梯度提升樹的故障診斷(Matlab) 模型描述 XGBoost通過集成多個決策樹來建立一個強大的預測模型。它采用了一種特殊的梯度提升技術,稱為極限梯度提升(Extreme Gradient Boosting),以提高模型的性能和魯棒性。 極限梯度…

【大數據Hive】hive 多字段分隔符使用詳解

目錄 一、前言 二、hive默認分隔符規則以及限制 2.1 正常示例&#xff1a;單字節分隔符數據加載示例 2.2 特殊格式的文本數據&#xff0c;分隔符為特殊字符 2.2.1 文本數據的字段中包含了分隔符 三、突破默認限制規則約束 3.1 數據加載不匹配情況 1 3.2 數據加載不匹配…

python paramiko 網絡系統運維

概述 背景&#xff1a;網絡系統運維與建設&#xff1a;工作中發現客戶使用python腳本批量操作網絡設備導出多臺網絡設備的配置定期執行相關的巡檢工作 修改配置 # -*- coding:utf8 -*- """ # editor: hjjdreamer # create-time: 2024/3/3-23:31 # Python-Scri…

Java項目推薦|幾個B站上的從零搭建項目

分享幾個B站上搜集到的技術比較全&#xff0c;講解也詳細的Java后端開發項目 目錄 谷粒商城 2020-03-31 iHRM 人力資源管理系統 2021-04-16 瑞吉外賣 2022-04-12 學成在線 2023-01-13 尚上優選 2023-06-06 黑馬頭條 2023-06-13 蒼穹外賣 2023-07-05 谷粒商城 2020-03-3…

命名實體識別NER

一、什么是命名實體識別&#xff1a; 命名實體&#xff1a;通常我們將人名、地名、機構名等專有名詞統稱命名實體&#xff0c;如&#xff1a;周杰倫&#xff0c;黑山縣&#xff0c;孔子學院&#xff0c;24方鋼直機 顧名思議&#xff0c;命名實體識別&#xff08;簡稱NER&#x…

【常用的 Git 命令及簡要示例說明】

常用的 Git 命令及簡要示例說明&#xff0c;以供參考&#xff1a; 初始化一個新的代碼倉庫&#xff1a; git init克隆一個遠程倉庫到本地&#xff1a; git clone https://github.com/user/repo.git添加當前所有變更到暫存區&#xff1a; git add .提交暫存區的變更到本地倉庫&a…

STM32FreeRTOS任務通知(STM32cube高效開發)

文章目錄 一、任務通知(一&#xff09;任務通知概述1、任務通知可模擬隊列和信號量2、任務通知優勢和局限性 (二) 任務通知函數1、xTaskNotify&#xff08;&#xff09;發送通知值不返回先前通知值的函數2、xTaskNotifyFromISR&#xff08;&#xff09;發送通知函數ISR版本3、x…

Java面試題總結200道(二)

26、簡述Spring中Bean的生命周期&#xff1f; 在原生的java環境中&#xff0c;一個新的對象的產生是我們用new()的方式產生出來的。在Spring的IOC容器中&#xff0c;將這一部分的工作幫我們完成了(Bean對象的管理)。既然是對象&#xff0c;就存在生命周期&#xff0c;也就是作用…

LeetCode 刷題 [C++] 第73題.矩陣置零

題目描述 給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 題目分析 題目中要求使用原地算法&#xff1a;即直接在輸入矩陣上進行修改。因此如果在輸入矩陣上把行/列的值修改成0后&#xff0c;在…