天天看點

ElasticJob‐Lite:更換事件追蹤資料源應用啟動報錯

部落客在上一篇部落格中介紹了​

​ElasticJob​

​的事件追蹤:

  • ​​ElasticJob‐Lite:事件追蹤​​

今天本來想介紹​

​ElasticJob​

​的作業監聽器,在上面這篇部落格的代碼基礎上,移除了事件追蹤相關配置,然後啟動應用,應用報錯如下圖所示:

ElasticJob‐Lite:更換事件追蹤資料源應用啟動報錯

分析

報錯的原因很顯然是找不到​

​com.mysql.cj.jdbc.MysqlDataSource​

​​類,但是部落客已經将事件追蹤相關配置(資料庫配置、事件追蹤類型以及資料庫依賴)都移除了,應用是怎麼知道使用​

​Mysql​

​​資料庫作為事件追蹤資料源?以及如何确定資料源的類名(​

​Mysql​

​​版本不同,資料源類名存在差異)?是以,應用肯定是拉取了​

​ZooKeeper​

​中關于作業的配置資訊。

檢視​

​my-job​

​​命名空間下​

​MySimpleJob​

​作業的配置資訊:

get /my-job/MySimpleJob/config      

可以發現以下關于事件追蹤配置的資訊:

# 資料源類名
dataSourceClassName: com.mysql.cj.jdbc.MysqlDataSource  
# 資料庫配置
user: root
password: [email protected]
url: jdbc:mysql://localhost:3306/trace?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 事件追蹤類型
type: RDB      

解決

是以,解決這個問題有三種方法(部落客能想到的):

  1. 換成原來的事件追蹤配置,很顯然應用是根據​

    ​ZooKeeper​

    ​中的作業配置資訊來配置作業執行的各種環境,隻要目前的作業配置資訊和​

    ​ZooKeeper​

    ​中的作業配置資訊一緻即可。
  2. 将本地作業配置資訊覆寫注冊中心的作業配置資訊,需要設定​

    ​overwrite​

    ​參數為​

    ​true​

    ​(預設為​

    ​false​

    ​),每次啟動時都将使用本地的作業配置(即以本地的作業配置為主,不然本地修改作業配置不會起作用)。
  3. ElasticJob‐Lite:更換事件追蹤資料源應用啟動報錯
  4. 或者:
  5. 給作業一個新的作業名稱,這樣就會建立一個新的作業。

繼續閱讀