国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

xxl-job Vs ElasticJob,誰牛?

開發 架構
ElasticJob 則出自當當,設計 ElasticJob 的初衷是為了面對高并發以及復雜的業務,即使是在業務量大,服務器多的時候也能做好任務調度,盡可能的利用服務器的資源。

前兩天寫了一篇文章介紹了一下 ElasticJob,有不少小伙伴強烈建議講講 xxl-job,其實 ElasticJob 本來就是一個引子,松哥本來就是想和大家分享 xxl-job。

1. xxl-job

松哥也在微信群里和小伙伴們討論過各自到底用的是 xxl-job 還是 ElasticJob,討論的結果就是,xxl-job 使用的人更多一些。

不說功能的優劣,我們單純從數據上其實就能看出一些端倪:

這是 xxl-job 的 GitHub:

這是 ElasticJob 的 GitHub:

從這個數據比較上大概也能看出來 xxl-job 更火一些。注意我這里說的是更火一些,不是說 xxl-job 比 ElasticJob 更強。

xxl-job 出自大眾點評,這是一個分布式輕量級的任務調度框架,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。

xxl-job 通過一個中心式的調度平臺,調度多個執行器執行任務,調度中心通過 DB 鎖保證集群分布式調度的一致性,這樣擴展執行器會增大 DB 的壓力,然而大部分公司的任務數,執行器并不多;xxl-job 提供了非常好用的監控頁面甚至還有任務失敗的郵件告警功能。不同于 ElasticJob,xxl-job 在使用時依賴 MySQL,而不需要 ZooKeeper。

ElasticJob 則出自當當,設計 ElasticJob 的初衷是為了面對高并發以及復雜的業務,即使是在業務量大,服務器多的時候也能做好任務調度,盡可能的利用服務器的資源。ElasticJob 是無中心化的,如果主服務器掛了,會自動通過 ZooKeeper 的選舉機制選舉出新的主服務器。因此 ElasticJob 具有良好的擴展性和可用性。

所以,你打算用哪個?

2. 運行 xxl-job

我們先把 xxl-job 跑起來,再寫我們自己的代碼。

首先我們先把 xxl-job 的代碼搞下來,地址:

https://github.com/xuxueli/xxl-job

然后用 IDEA 打開項目,打開之后,有四個主要的文件夾:

  • doc:項目文檔
  • xxl-job-admin:任務調度平臺
  • xxl-job-core:核心代碼
  • xxl-job-executor-samples:案例

由于 xxl-job 運行需要數據庫,所以接下來我們就來配置數據庫,先找到數據庫腳本,在 doc/db/tables_xxl_job.sql 位置。

找到數據庫腳本后,導入到數據庫中執行一下,執行完成后,生成如下庫和表:

接下來找到 xxl-job-admin/src/main/resources/application.properties 文件,修改數據庫連接信息:

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=123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

日志配置也要修改一下,在 xxl-job-admin/src/main/resources/logback.xml 文件中,有如下一行:

<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>

如果你是 Windows 操作系統,這里肯定要改,如果你是 Mac 的話,也有可能沒有這個目錄的權限,因此我建議大家改一下這里的配置,改為如下這樣:

<property name="log.path" value="./applogs/xxl-job/xxl-job-admin.log"/>

改為在項目運行目錄下生成這個日志文件。

修改完成后,接下來我們就可以啟動 xxl-job-admin 項目了,這是一個 SpringBoot 項目,找到啟動類,直接運行其 main 方法即可。

項目啟動成功后,瀏覽器輸入如下地址 http://localhost:8080/xxl-job-admin/toLogin,就可以看到登錄頁面了:

默認的登錄賬號是 admin/123456。

看到如下頁面,就是登錄成功了。

3. 開發定時任務

3.1 項目創建及配置

接下來我們來創建一個項目,跑一個定時任務看看。

首先創建一個 SpringBoot 項目,引入 Web 依賴,如下:

項目創建成功后,引入 xxl-job 的依賴:

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

然后在 resources 目錄下加入 logback.xml,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

<contextName>logback</contextName>
<property name="log.path" value="./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%n</pattern>
</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}.zip</fileNamePattern>
</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>

修改 application.properties 文件,內容如下:

# web port
server.port=8089

# 日志配置
logging.config=classpath:logback.xml

# 配置調度中心地址
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

# 執行器和調度中心之間的通信令牌,如果沒有配置,表示關閉了通信令牌的校驗。
# 在 xxl-job-admin 的配置文件中,有一個一模一樣的配置項,兩邊都配置,就會進行校驗。
xxl.job.accessToken=

# 配置執行器的名字
xxl.job.executor.appname=xxl-job-demo
# 執行器地址,如果沒有配置,就使用 IP:PORT 作為默認值
xxl.job.executor.address=
# 執行器 ip 地址
xxl.job.executor.ip=
# 執行器端口,默認即 9999
xxl.job.executor.port=9999
# 執行器日志文件位置
xxl.job.executor.logpath=./applogs/xxl-job/jobhandler
# 執行器日志保存時間
xxl.job.executor.logretentiondays=30

各項配置的含義我已經加了注釋了。

接下來再提供一個配置類,如下:

@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;
}

}

其實就是把剛剛 application.properties 中的屬性都配置成一個 XxlJobSpringExecutor Bean,很奇怪官方為什么沒把這個搞成一個自動化配置的 Bean。

接下來我們就可以創建一個具體的定時任務了。

3.2 定時任務開發方式

對于我們 Java 工程師而言,有三種開發定時任務的方式。

3.2.1 BEAN 模式(類形式)

Bean 模式任務,支持基于類的開發方式,每個任務對應一個 Java 類。

優點:不限制項目環境,兼容性好。即使是無框架項目,如 main 方法直接啟動的項目也可以提供支持。

缺點:

  • 每個任務需要占用一個Java類,造成類的浪費;
  • 不支持自動掃描任務并注入到執行器容器,需要手動注入。

開發方式:

  • 開發一個繼承自 com.xxl.job.core.handler.IJobHandler 的 JobHandler 類,實現其中任務方法。
  • 手動通過如下方式注入到執行器容器:
XxlJobExecutor.registJobHandler("demoJobHandler", new DemoJobHandler());
  • 在調度中心新建調度任務(后續步驟和 3.2.1 BEAN 模式(方法形式) 一致)。

這種方式用的不多,我就不給大家演示了,小伙伴們可以自行嘗試。

3.2.2 BEAN模式(方法形式)

Bean 模式任務,支持基于方法的開發方式,每個任務對應一個方法,一般推薦這種方式。

優點:

  • 每個任務只需要開發一個方法,并添加 ”@XxlJob” 注解即可,更加方便、快速。
  • 支持自動掃描任務并注入到執行器容器。

缺點:

  • 要求 Spring 容器環境。

基于方法開發的任務,底層會生成 JobHandler 代理,和基于類的方式一樣,任務也會以 JobHandler 的形式存在于執行器任務容器中。

開發步驟:

  • 開發 Job 方法:
@Component
public class MyJob {
@XxlJob("demoJobHandler")
public ReturnT<String> demoJobHandler() throws Exception {
String param = XxlJobHelper.getJobParam();
XxlJobHelper.log("XXL-JOB, Hello World:{}",param);
return ReturnT.SUCCESS;
}
}

這里的 @XxlJob 注解標記了這是一個定時任務方法,該注解還有 init 和 destroy 屬性,可以分別用來配置初始化和銷毀的方法。

XxlJobHelper.getJobParam() 可以用來獲取任務參數。

在這個過程中,我們需要通過 XxlJobHelper.log 打印執行日志。

默認任務結果為 "成功" 狀態,不需要主動設置;如有訴求,比如設置任務結果為失敗,可以通過 XxlJobHelper.handleFail/handleSuccess 自主設置任務結果。

然后啟動 SpringBoot 項目。

  • 配置調度中心,新建調度任務

接下來打開配置調度中心,找到執行器管理,點擊新增,如下:

如果是自動注冊的話,可以不用填機器地址。

接下來找到任務管理,并點擊新增:

基礎配置都沒啥好說的。

調度類型選擇 CRON 表達式,CRON 表達式可以自己填,也可以點擊后面的編輯按鈕自動生成。

運行模式就選擇 BEAN,JobHandler 的值就是我們前面 @XxlJob 注解中填的值,任務參數就是定時任務的方法參數。

配置完成后,回到執行器管理,點擊查看,可以查看剛剛注冊的節點信息:

再次回到任務管理,選擇啟動,就可以開始定時任務的執行了:

開啟之后,點擊調度日志,就可以看到我們系統任務執行的詳細信息了:

可以看到,每隔 5 秒執行一次。

點擊調度備注,可以查看一些調度細節:

在右邊操作按鈕中選擇執行日志:

可以查看執行細節:

紅色框出來的,就是我們剛剛自己打印的。

當然這里還有一些其他玩法,小伙伴們可以自行點擊按鈕嘗試,我就不贅述了。

3.2.3 GLUE 模式(Java)

任務以源碼方式維護在調度中心,支持通過 Web IDE 在線更新,實時編譯和生效,因此不需要指定 JobHandler。即在網頁上寫定時任務的代碼,然后去執行。

這種方式個人感覺使用較少,小伙伴們了解一下即可。

開發流程如下:

  • 調度中心->任務管理,新建調度任務,新建時選擇 “GLUE模式(Java)”:

開發任務代碼:選中指定任務,點擊該任務右側 GLUE 按鈕,將會前往 GLUE 任務的 Web IDE 界面,在該界面支持對任務代碼進行開發(也可以在IDE中開發完成后,復制粘貼到編輯中)。

編輯完成后,保存即可。接下來又和前面一樣了,啟動任務,后查看調度日志。

這里支持 30 個版本的版本回溯,在 GLUE 任務的 Web IDE 界面,選擇右上角下拉框“版本回溯”,會列出該 GLUE 的更新歷史,選擇相應版本即可顯示該版本代碼,保存后 GLUE 代碼即回退到對應的歷史版本。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2020-07-17 09:33:39

CPU內存調度

2025-09-18 09:31:01

2025-02-18 14:08:14

2022-09-23 13:57:11

xxl-job任務調度中間件

2025-05-26 09:31:23

2024-08-27 09:34:24

2025-08-05 01:45:00

XXL-JOB自動注冊運維

2024-09-09 08:11:12

2023-11-30 22:06:43

2025-06-27 09:31:25

2023-01-04 09:23:58

2024-07-31 08:18:40

2024-12-04 10:47:26

2021-12-26 00:03:27

響應式編程異步

2022-01-27 08:44:58

調度系統開源

2021-12-26 19:07:51

MySQL存儲容器

2022-05-23 09:11:18

AngularBlazor前端

2019-03-01 09:36:25

ReactAngular開發

2022-12-29 08:32:50

xxl-job緩存Schedule

2023-06-27 07:44:53

xxl-job分布式任務調度平臺
點贊
收藏

51CTO技術棧公眾號

久久综合国产精品| 欧美一区二区观看视频| 午夜午夜精品一区二区三区文| 国产伊人精品| 四虎免费在线观看视频| 中文字幕 久热精品 视频在线| 三级ai视频| 欧美日韩一区二区三区四区| 美女网站视频一区| 亚洲人妖av一区二区| 福利资源在线久| 欧美电视剧在线看免费| 性色av一区二区| 久久午夜影院| 国产区视频在线| 国产一区二区三区18| 国产羞羞视频在线播放| 色中色综合影院手机版在线观看| 女同性一区二区三区人了人一| 综合网五月天| 亚洲成人免费电影| 成人免费视频a| 亚洲精品在线观看免费| 91亚洲资源网| 国产午夜视频在线观看| 日韩一级黄色av| 中文字幕午夜精品一区二区三区 | 亚洲国产一区二区三区在线| 国产午夜精品一区二区| 日本中文字幕电影在线免费观看| 欧美日韩国产成人| 久久蜜桃精品| 免费看成人a| 在线观看成人黄色| 亚洲一级二级| 97操碰视频| 亚洲欧美国产精品va在线观看| www免费网站在线观看| 亚洲不卡av一区二区三区| 中文字幕影音在线| 亚洲欧美福利视频| 色88久久久久高潮综合影院| 欧美成人免费在线观看视频| 国产精品一区在线观看乱码 | 性欧美.com| 午夜久久久影院| 久久视频社区| 欧美久久精品一级黑人c片| 欧美激情1区2区| 美女一区二区三区视频| 精品日韩在线观看| 久久精品久久久| 美女一区二区三区视频| 日韩hd视频在线观看| 欧美精品一卡| 丁香视频免费观看| 日日骚久久av| 国产精品777777在线播放| 日本成人三级电影网站| 精品久久久久国产| 国内自拍欧美| 免费av观看网址| 亚洲毛片在线看| 久久久777| a黄色在线观看| 国产精品视频自拍| 亚洲国产成人一区二区三区| av亚洲一区二区三区| 天堂va久久久噜噜噜久久va| 欧美浪妇xxxx高跟鞋交| 午夜久久影院| 天天在线女人的天堂视频| 情事1991在线| 国产免费成人在线视频| 久久天天久久| 国产视频在线观看网站| 亚洲国产一区自拍| 久久精品久久99精品久久| 国产在线观看a视频| 99国产视频| 欧美性三三影院| 欧美69视频| 男女污视频在线观看| 91老司机精品视频| 五月天亚洲婷婷| 99久久亚洲精品| 免费一级在线观看播放网址| 亚洲伊人一本大道中文字幕| 青娱乐精品在线视频| 91社区在线高清| 精品1区2区| 日韩精品一区二区三区四区视频 | 亚洲视频www| 激情影院在线观看| 欧美日本亚洲| 欧美v亚洲v综合ⅴ国产v| 蜜桃av一区二区在线观看| 欧美调教sm| 中文精品无码中文字幕无码专区| 亚洲视频在线观看网站| 成人激情视频网站| 日本亚洲视频| 男人免费av| 成人黄色免费网站在线观看| 色综合久久久久综合99| 男人皇宫亚洲男人2020| 成人av在线不卡| 久久6免费高清热精品| 中文av一区二区| 欧洲杯半决赛直播| 免费在线超碰| 一卡二卡3卡四卡高清精品视频| 国产亚洲精品久久| 久久亚洲捆绑美女| 精品国产99| 日本免费视频在线观看| 亚洲午夜精品一区二区三区| 综合网中文字幕| 亚洲丝袜美腿综合| 欧美另类女人| 国产精品高颜值在线观看| av免费中文字幕| 在线免费不卡视频| 视频一区欧美精品| 精品欧美日韩精品| av网站在线不卡| 成人精品视频久久久久| 日韩欧美一区二区视频| 99久久婷婷国产综合精品电影 | 成人三级网址| 成人在线免费观看网址| 91精品国产网站| 色狠狠桃花综合| 另类综合日韩欧美亚洲| y111111国产精品久久久| 久草视频视频在线播放| 日韩视频在线观看视频| 欧美激情图片区| 欧美午夜精品久久久久久孕妇| 国产成人久久精品77777最新版本| 婷婷综合一区| 日韩avxxx| 国产精品自拍偷拍| 亚洲第一区中文字幕| 婷婷久久国产对白刺激五月99| 大地资源网3页在线观看| av之家在线观看| 91热福利电影| 伊人久久免费视频| 亚洲h在线观看| 国产美女精品在线| 波多野结衣在线观看一区二区三区| 色爱综合区网| jlzzjlzz欧美| 在线观看亚洲视频啊啊啊啊| 日本欧美中文字幕| 亚洲精品99久久久久中文字幕| 中文字幕一区二区5566日韩| 日本亚洲欧洲无免费码在线| 国产a级网站| 干日本少妇视频| 国产精品偷伦视频免费观看国产| 亚洲国产精彩中文乱码av| 亚洲精品视频免费看| 精品在线亚洲视频| 99视频精品全国免费| 国产91欧美| 国产高清一区二区三区视频| 女生裸体视频网站免费观看| 三级在线免费观看| 成人91免费视频| 欧美亚洲一级片| 亚洲人成在线观看网站高清| 欧美三级中文字幕在线观看| 亚洲欧洲精品成人久久奇米网| 国产精品123区| 久久精品系列| 亚洲二区三区不卡| 国产精品中文字幕制服诱惑| 九色porny丨国产首页在线| 国产一区二区影视| 99精产国品一二三产品香蕉| 野外做受又硬又粗又大视频√| 国产精品乱子乱xxxx| 国产精品久久久久91| 色综合91久久精品中文字幕 | 日韩在线激情| 蜜臀av在线| 成人在线高清视频| 日日躁夜夜躁人人揉av五月天| 亚洲中文字幕无码专区| 亚洲成人av动漫| 久久久久久国产精品mv| 国产欧美婷婷中文| 91国产在线精品| 九九久久综合网站| 中文字幕欧美日韩在线| 亚洲精品视频网上网址在线观看| 日韩一区二区精品葵司在线| 欧美吻胸吃奶大尺度电影|