部落客在上一篇部落格中介紹了
ElasticJob
的事件追蹤:
- ElasticJob‐Lite:事件追蹤
今天本來想介紹
ElasticJob
的作業監聽器,在上面這篇部落格的代碼基礎上,移除了事件追蹤相關配置,然後啟動應用,應用報錯如下圖所示:
分析
報錯的原因很顯然是找不到
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
解決
是以,解決這個問題有三種方法(部落客能想到的):
- 換成原來的事件追蹤配置,很顯然應用是根據
中的作業配置資訊來配置作業執行的各種環境,隻要目前的作業配置資訊和ZooKeeper
中的作業配置資訊一緻即可。ZooKeeper
- 将本地作業配置資訊覆寫注冊中心的作業配置資訊,需要設定
參數為overwrite
(預設為true
),每次啟動時都将使用本地的作業配置(即以本地的作業配置為主,不然本地修改作業配置不會起作用)。false
- 或者:
- 給作業一個新的作業名稱,這樣就會建立一個新的作業。