Spring cloud集成ElastictJob分布式定時任務完整攻略(含snakeyaml報錯處理方法)


ElasticJob 是一款輕量級、可擴展的分布式定時任務解決方案,基于 Quartz 二次開發,支持任務分片、失效轉移、任務追蹤等功能,非常適合在 Spring Cloud 微服務場景中使用。

我將帶你完成 Spring Cloud 集成 ElasticJob 的全過程,并分享一個 SnakeYAML 報錯 的實際解決方案。


1. 環境準備

在開始前,你需要準備:

  • Spring Cloud 項目(Spring Boot 2.x / 3.x 均可)
  • Zookeeper 作為注冊中心(建議本地啟動一個 localhost:2181
  • ElasticJob 最新版本(支持 3.x)
  • Java 8+

2. 引入依賴

pom.xml 中添加:

<dependencies><!-- ElasticJob Lite 核心依賴 --><dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-spring-boot-starter</artifactId><version>3.0.0</version></dependency><!-- Lombok(可選) --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>
</dependencies>

3. 核心代碼實現

這里我們使用 Java 代碼方式 啟動定時任務,避免復雜的 XML 配置。

3.1 創建 Job 實現類

import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.elasticjob.api.simple.job.SimpleJob;
import org.apache.shardingsphere.elasticjob.api.ShardingContext;@Slf4j
public class NewJob implements SimpleJob {@Overridepublic void execute(ShardingContext shardingContext) {int item = shardingContext.getShardingItem();log.info("當前分片:{}", item);}
}

3.2 注冊中心 & 任務配置

import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;public class ElasticJobConfig {public void schedule() {new ScheduleJobBootstrap(createRegistryCenter(),new NewJob(),createJobConfiguration()).schedule();}public CoordinatorRegistryCenter createRegistryCenter() {CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(new ZookeeperConfiguration("localhost:2181", "my-job"));regCenter.init();return regCenter;}public JobConfiguration createJobConfiguration() {return JobConfiguration.newBuilder("test", 1) // 任務名 & 分片數.jobParameter("hello").cron("0/5 * * * * ?") // 每 5 秒執行一次.build();}
}

在 Spring Boot 啟動類中調用:

@SpringBootApplication
public class JobApplication {public static void main(String[] args) {SpringApplication.run(JobApplication.class, args);new ElasticJobConfig().schedule();}
}

4. 運行效果

啟動后,日志將每 5 秒輸出一次當前分片 ID:

INFO  當前分片:0

5. SnakeYAML 報錯問題及解決方案

在 Spring Boot 3.x / SnakeYAML 高版本環境中,ElasticJob 啟動時可能會遇到 org.yaml.snakeyaml.error 相關異常,比如:

java.lang.NoSuchMethodError: 'org.yaml.snakeyaml.nodes.Tag'

原因是 ElasticJob 內部使用了舊版本 SnakeYAML API,而 Spring Boot 自帶了較新版本,導致 API 變更 報錯。

5.1 解決思路

辦法有兩個:

  1. 統一 SnakeYAML 版本(推薦)
    強制 pom.xml 中使用最新版本,并排除 Spring Boot 中的舊版本。

  2. 重寫 Representer(你提供的成功方法)
    通過繼承 org.yaml.snakeyaml.representer.Representer 并適配新 API。


5.2 重寫 Representer 示例


public class CustomRepresenter extends Representer {
//加入新的無參構造public Representer() {super(new DumperOptions());this.representers.put(null, new org.yaml.snakeyaml.representer.Representer.RepresentJavaBean());}//其它代碼不變
}

6. 總結

  • ElasticJob 適合分布式場景,Zookeeper 是其注冊中心核心組件。
  • 推薦 Java API 啟動任務,方便在 Spring Boot 中集成。
  • SnakeYAML 報錯可通過 版本統一自定義 Representer 解決。

我是PXM,點個關注不迷路

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

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

相關文章

了解 Linux 中的 /usr 目錄以及 bin、sbin 和 lib 的演變

Linux 文件系統層次結構是一個復雜且引人入勝的體系&#xff0c;其根源深植于類 Unix 操作系統的歷史之中。在這一結構的核心&#xff0c;/usr 目錄是一個至關重要的組成部分&#xff0c;隨著時間的推移&#xff0c;它經歷了顯著的演變。與此同時&#xff0c;/bin、/sbin、/lib…

高級IO(五種IO模型介紹)

文章目錄一、IO為什么慢&#xff1f;一、阻塞IO二、非阻塞IO三、信號驅動IO四、IO多路復用五、異步IO一、IO為什么慢&#xff1f; IO操作往往都是和外設交互&#xff0c;比如鍵盤、鼠標、打印機、磁盤。而最常見的就是內存與磁盤的交互&#xff0c;要知道磁盤是機械設備&#…

第十二節:粒子系統:海量點渲染

第十二節&#xff1a;粒子系統&#xff1a;海量點渲染 引言 粒子系統是創造動態視覺效果的神器&#xff0c;從漫天繁星到熊熊火焰&#xff0c;從魔法特效到數據可視化&#xff0c;都離不開粒子技術。Three.js提供了強大的粒子渲染能力&#xff0c;可輕松處理百萬級粒子。本文將…

LeetCode Day5 -- 二叉樹

目錄 1. 啥時候用二叉樹&#xff1f; &#xff08;1&#xff09;典型問題 &#xff08;2&#xff09;核心思路 2. BFS、DFS、BST 2.1 廣度優先搜索BFS &#xff08;1&#xff09;適用任務 &#xff08;2&#xff09;解決思路??&#xff1a;使用隊列逐層遍歷 2.2 深度…

<c1:C1DateTimePicker的日期時間控件,控制日期可以修改,時間不能修改,另外控制開始時間的最大值比結束時間小一天

兩個時間控件 <c1:C1DateTimePicker Width"170" EditMode"DateTime" CustomDateFormat"yyyy-MM-dd" CustomTimeFormat"HH:mm:ss" Style"{StaticResource ListSearch-DateTimePicker}" x:Name"dateTimePicker"…

文件完整性監控工具:架構和實現

文件完整性監控(FIM)作為一道關鍵的防御層&#xff0c;確保系統和網絡中文件及文件夾的完整性與安全性。文件完整性監控工具通過監控關鍵文件的變更并檢測未經授權的修改&#xff0c;提供關于潛在安全漏洞、惡意軟件感染和內部威脅的早期警報。為了使文件完整性監控工具發揮實效…

Linux信號量和信號

1.溫故知新上一篇博客&#xff0c;我們又知道了一種進程間通信的方案&#xff1a;共享內存。它是在物理內存中用系統調用給我們在物理內存開辟一個共享內存&#xff0c;可以由多個進程的頁表進行映射&#xff0c;共享內存不和管道一樣&#xff0c;它的生命周期是隨內核的&#…

騰訊測試崗位面試真題分析

以下是對騰訊測試工程師面試問題的分類整理、領域占比分析及高頻問題精選&#xff08;基于??92道問題&#xff0c;總出現次數118次??&#xff09;。問題按??7大技術領域??劃分&#xff0c;高頻問題標注優先級&#xff08;1-5&#x1f31f;&#xff09;&#xff1a; 不…

全面解析遠程桌面:功能實現、性能優化與安全防護全攻略

遠程桌面技術已成為工作與生活中不可或缺的協作工具&#xff0c;但在實際應用中&#xff0c;用戶常遇到連接失敗、卡頓延遲、安全隱患等問題。本文從遠程桌面功能原理、網絡與性能優化、安全防護策略、跨平臺兼容性等角度&#xff0c;詳細解析常見問題的解決方案&#xff0c;并…

【問題】Mybatis-plus框架使用@Select注解編寫查詢SQL,json字段查詢轉換失敗

問題描述在使用mybaits-plus的時候定義的Mapper接口實現了BaseMapper&#xff0c;沒有編寫Mapper對應的xml&#xff0c;大部分查詢使用框架的接口進行查詢基本屬性返回都是正常&#xff0c;復雜對象在sql中會進行查詢&#xff0c;但是返回對象中卻未包含相關屬性。問題原因 沒有…

Python多線程實現大文件下載

Python多線程實現大文件下載 在互聯網時代&#xff0c;文件下載是日常操作之一&#xff0c;尤其是大文件&#xff0c;如軟件安裝包、高清視頻等。然而&#xff0c;網絡條件不穩定或帶寬有限時&#xff0c;下載速度會變得很慢&#xff0c;令人抓狂。幸運的是&#xff0c;通過多線…

【R語言】RStudio 中的 Source on Save、Run、Source 辨析

RStudio 中的 Source on Save、Run、Source 辨析 在使用 RStudio 進行 R 語言開發時&#xff0c;我們會在主界面左上角看見三個按鈕&#xff1a;Source on Save、Run、Source 。 本文將帶你從概念、使用方法、快捷鍵、使用場景以及注意事項等方面詳細解析這三個功能。 文章目錄…

藍橋杯算法之搜索章 - 4

目錄 文章目錄 前言 一、記憶化搜索 二、題目概略 三、斐波拉契數 四、Function 五、天下第一 六、滑雪 總結 親愛的讀者朋友們&#xff0c;大家好啊&#xff01;不同的時間&#xff0c;相同的地點&#xff0c;今天又帶來了關于搜索部分的講解。接下來我將接著我前面文章的內容…

抗量子加密技術前瞻:后量子時代的密碼學革命

目錄抗量子加密技術前瞻&#xff1a;后量子時代的密碼學革命1. 量子計算威脅現狀1.1 量子霸權里程碑1.2 受威脅算法1.3 時間緊迫性2. 抗量子密碼學體系2.1 技術路線對比2.2 數學基礎革新3. 標準化進程3.1 NIST PQC標準化時間線3.2 當前推薦算法4. 技術實現方案4.1 Kyber密鑰交換…

基于STM32設計的礦山環境監測系統(NBIOT)_262

文章目錄 一、前言 1.1 項目介紹 【1】開發背景 【2】研究的意義 【3】最終實現需求 【4】項目硬件模塊組成 1.2 設計思路 【1】整體設計思路 【2】上位機開發思路 1.3 項目開發背景 【1】選題的意義 【2】摘要 【3】國內外相關研究現狀 【5】參考文獻 1.4 開發工具的選擇 【1】…

電腦如何安裝win10專業版_電腦用u盤安裝win10專業版教程

電腦如何安裝win10專業版&#xff1f;電腦還是建議安裝win10專業版。Win分為多個版本&#xff0c;其中家庭版&#xff08;Home&#xff09;和專業版&#xff08;Pro&#xff09;是用戶選擇最多的兩個版本。win10專業版在功能以及安全性方面有著明顯的優勢&#xff0c;所以電腦還…

多語言文本 AI 情感分析 API 數據接口

多語言文本 AI 情感分析 API 數據接口 AI / 文本處理 AI 模型快速分析文本情感傾向 多語言文本 / 情感分析。 1. 產品功能 支持多語言文本情感分析&#xff1b;基于特定 AI 模型&#xff0c;快速識別文本情感傾向&#xff1b;適用于評論分析、輿情監控等場景&#xff1b;全接…

【R語言】R語言的工作空間映像(workspace image,通常是.RData)詳解

R語言的工作空間映像&#xff08;.RData&#xff09;詳解 在使用 R 語言時&#xff0c;你可能會注意到&#xff0c;每次退出 R 會彈出一個提示&#xff1a; Save workspace image? [y/n/c] 如果你使用的是 Rstudio 這個 IDE 來進行R語言的開發&#xff0c;那么可能彈出的提示…

在線 A2C實踐

在線 A2C&#xff08;Actor-Critic&#xff09;算法在推薦系統中的實踐&#xff0c;核心是將推薦過程建模為實時交互的強化學習問題&#xff0c;通過 Actor 生成推薦策略、Critic 評估策略價值&#xff0c;實現 “決策 - 反饋 - 更新” 的閉環。從樣本設計到最終上線&#xff0…

Eclipse RCP產品動態模塊設計

文章目錄 遇到問題具體實踐效果演示應用下載 遇到問題 如果你是一個To C產品的設計者&#xff0c;勢必會遇到用戶需求高度分化的場景&#xff0c;隨之而來的是繁雜的功能列表&#xff0c;如何讓用戶只接觸與其任務直接相關的功能&#xff0c;隱藏無關元素&#xff1f; 具體實…